diff options
author | Lain Iwakura <lain@soykaf.club> | 2017-12-04 19:10:15 +0100 |
---|---|---|
committer | Lain Iwakura <lain@soykaf.club> | 2017-12-04 19:10:15 +0100 |
commit | 5c4098612067abf16e5c10e878656dc412304cd3 (patch) | |
tree | c0400aaf3e5f51e0c76607ef9b9fbd496533b901 /lib/pleroma/web/channels | |
parent | d08a34e88b0d42f403755e1bdbaf015784ebbe74 (diff) | |
download | pleroma-5c4098612067abf16e5c10e878656dc412304cd3.tar.gz |
Basic backend chat.
Diffstat (limited to 'lib/pleroma/web/channels')
-rw-r--r-- | lib/pleroma/web/channels/user_socket.ex | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/pleroma/web/channels/user_socket.ex b/lib/pleroma/web/channels/user_socket.ex index 7aa8e556e..d8171cabd 100644 --- a/lib/pleroma/web/channels/user_socket.ex +++ b/lib/pleroma/web/channels/user_socket.ex @@ -1,8 +1,11 @@ defmodule Pleroma.Web.UserSocket do use Phoenix.Socket + alias Pleroma.User + alias Comeonin.Pbkdf2 ## Channels # channel "room:*", Pleroma.Web.RoomChannel + channel "chat:*", Pleroma.Web.ChatChannel ## Transports transport :websocket, Phoenix.Transports.WebSocket @@ -19,8 +22,13 @@ defmodule Pleroma.Web.UserSocket do # # See `Phoenix.Token` documentation for examples in # performing token verification on connect. - def connect(_params, socket) do - {:ok, socket} + def connect(%{"token" => token}, socket) do + with {:ok, user_id} <- Phoenix.Token.verify(socket, "user socket", token, max_age: 84600), + %User{} = user <- Pleroma.Repo.get(User, user_id) do + {:ok, assign(socket, :user, user)} + else + _e -> :error + end end # Socket id's are topics that allow you to identify all sockets for a given user: |