Files

28 lines
862 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
channel "calibration:*", Localiser.Web.Channels.CalibrationChannel
@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