27 lines
791 B
Elixir
27 lines
791 B
Elixir
defmodule Localiser.Web.UserSocket do
|
|
use Phoenix.Socket
|
|
|
|
channel "particles:*", Localiser.Web.Channels.ParticlesChannel
|
|
channel "rooms:occupancy", Localiser.Web.Channels.RoomChannel
|
|
channel "sensors", Localiser.Web.Channels.SensorsChannel
|
|
|
|
@impl true
|
|
def connect(%{"token" => token}, socket, _connect_info) do
|
|
case Localiser.Web.Token.verify_token(token) do
|
|
{:ok, %{"sub" => user_id}} ->
|
|
case Localiser.Domain.Users.get_user(user_id) do
|
|
{:ok, user} -> {:ok, assign(socket, :current_user, user)}
|
|
_ -> :error
|
|
end
|
|
|
|
{:error, _} ->
|
|
:error
|
|
end
|
|
end
|
|
|
|
def connect(_params, _socket, _connect_info), do: :error
|
|
|
|
@impl true
|
|
def id(socket), do: "user_socket:#{socket.assigns.current_user.id}"
|
|
end
|