Size: a a a

Эликсир и Вунш

2019 February 14

FM

Fey Martynov in Эликсир и Вунш
поменяй на def id(socket), do: "user_socket:#{Guardian.Phoenix.Socket.current_resource(socket).id}"
источник

PZ

Pavel Zachesa in Эликсир и Вунш
В оригинале использовался не id сокета, а ["sub"], как мне переправить то, что предлагает мануал?
источник

FM

Fey Martynov in Эликсир и Вунш
ну можно так Guardian.Phoenix.Socket.current_claims(socket)["sub"]
источник

FM

Fey Martynov in Эликсир и Вунш
только зачем
источник

PZ

Pavel Zachesa in Эликсир и Вунш
Что так, что так, возвращаюсь к тому, с чего вчера начал: [info] Replied user:1 :error
источник

PZ

Pavel Zachesa in Эликсир и Вунш
В консоли браузера
reason: "Invalid user"
то есть не проходит проверку в канале
источник

FM

Fey Martynov in Эликсир и Вунш
ну посмотри что с чем сравнивается
источник

PZ

Pavel Zachesa in Эликсир и Вунш
Попробовал так: String.to_integer(user_id) == socket.assigns.guardian_default_claims["sub"]
всё равно {reason: "Invalid user"}
источник

PZ

Pavel Zachesa in Эликсир и Вунш
Не въеду откуда user_id берётся в этой строке: join("user:" <> user_id, _params, socket)
источник

ŹR

Źmićer Rubinštejn in Эликсир и Вунш
Неправильная строка
источник

ŹR

Źmićer Rubinštejn in Эликсир и Вунш
def join("user:" <> user_id, _params, socket) do
источник

ŹR

Źmićer Rubinštejn in Эликсир и Вунш
Вот так правильно
источник

PZ

Pavel Zachesa in Эликсир и Вунш
Да я "упростил"...
Вспомнил это во фронтенде   const channel = socket.channel(user:${user.id})
источник

ŹR

Źmićer Rubinštejn in Эликсир и Вунш
Это называется pattern matching
источник

ŹR

Źmićer Rubinštejn in Эликсир и Вунш
И желательно про это прочитать с самого начала
источник

ŹR

Źmićer Rubinštejn in Эликсир и Вунш
источник

PZ

Pavel Zachesa in Эликсир и Вунш
Читал, читал... суть в том, что я не могу понять что с чем сравнивается и как это победить.
источник

ŹR

Źmićer Rubinštejn in Эликсир и Вунш
внутри функции у тебя определен user_id в виде строки
источник

ŹR

Źmićer Rubinštejn in Эликсир и Вунш
Для этого на клиенте тебе надо присоединиться к каналу “user:его_ид”
источник

PZ

Pavel Zachesa in Эликсир и Вунш
Спасибо, я это уже давно понял, но любые манипуляции с данными приводят к ошибкам.
Что здесь ему (Эликсиру) не нравится?
   if String.to_integer(user_id) == socket.assigns.guardian_default_claims["sub"] do
     {:ok, socket}
источник