Packages
A web application in pursuit of meaning in life.
Current section
Files
Jump to
Current section
Files
lib/udia_web/channels/user_socket.ex
###############################################################################
# The contents of this file are subject to the Common Public Attribution
# License Version 1.0. (the "License"); you may not use this file except in
# compliance with the License. You may obtain a copy of the License at
# https://raw.githubusercontent.com/udia-software/udia/master/LICENSE.
# The License is based on the Mozilla Public License Version 1.1, but
# Sections 14 and 15 have been added to cover use of software over a computer
# network and provide for limited attribution for the Original Developer.
# In addition, Exhibit A has been modified to be consistent with Exhibit B.
#
# Software distributed under the License is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
# the specific language governing rights and limitations under the License.
#
# The Original Code is UDIA.
#
# The Original Developer is the Initial Developer. The Initial Developer of
# the Original Code is Udia Software Incorporated.
#
# All portions of the code written by UDIA are Copyright (c) 2016-2017
# Udia Software Incorporated. All Rights Reserved.
###############################################################################
defmodule UdiaWeb.UserSocket do
use Phoenix.Socket
import Guardian.Phoenix.Socket
## Channels
channel "post:*", UdiaWeb.PostChannel
if Application.get_env(:udia, :environment) == :dev do
transport :websocket, Phoenix.Transports.WebSocket, timeout: 60_000
else
transport :websocket, Phoenix.Transports.WebSocket, timeout: 45_000,
check_origin: [
Application.get_env(:udia, :udia_client)[:client_origin_url],
]
end
def connect(%{"guardian_token" => jwt}, socket) do
case sign_in(socket, jwt) do
{:ok, authed_socket, guardian_params} ->
{:ok, assign(authed_socket, :user_id, guardian_params.resource.username)}
_ ->
{:ok, assign(socket, :user_id, "")}
end
end
def connect(_params, socket) do
{:ok, assign(socket, :user_id, "")}
end
def id(socket) do
# unauthenticated will have empty string user_id, no guardian_default_claims
"users_socket:#{socket.assigns.user_id}"
end
end