Size: a a a

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

2019 February 23

PZ

Pavel Zachesa in Эликсир и Вунш
Подскажите пожалуйста, как решить вопрос с такой ошибкой, которая вылезла после попытки совмещения двух проектов в один, а также апгрейда на новый Гардиан.
(KeyError) key :struct not found in: %{id: "1"}
       (ecto) lib/ecto.ex:502: Ecto.assoc/2
Файлы и полный текст ошибки тут http://caix.ru/oshibki-dannyh/
источник

PZ

Pavel Zachesa in Эликсир и Вунш
В исходном проекте данные пользователя брались из сокета, для едионообразия я решил использовать Guardian.Plug.current_resource(conn) в итоге получаю %{id: "1"} из которого Ecto не может сотворить ассоциацию.
источник

PZ

Pavel Zachesa in Эликсир и Вунш
С днём Защитника Отечества тех, кто служил и всегда готов.
источник

K

Konstantin in Эликсир и Вунш
Он говорит, что приходит просто map, а он ждет какую-то структуру. Сложно сказать точнее, без кода
источник

PZ

Pavel Zachesa in Эликсир и Вунш
Код и полный текст ошибки тут http://caix.ru/oshibki-dannyh/
источник

K

Konstantin in Эликсир и Вунш
А с какого на какой гардиан апгрейд ?
источник

K

Konstantin in Эликсир и Вунш
Мне кажется, что что-то не так в функции 'resource_from_claims'
источник

PS

Petr Stepchenko in Эликсир и Вунш
Pavel Zachesa
Код и полный текст ошибки тут http://caix.ru/oshibki-dannyh/
выкладывай плиз на gist. Я второй раз захожу с мыслью тебе помочь, но становится лень разбирать в таком виде код
источник

PZ

Pavel Zachesa in Эликсир и Вунш
Непосредственно, в приложении от куда взята эта часть кода Гардиан не было. Вот так выглядела функция
joined_status = ChannelUserService.joined_channels_status(conn.assigns.current_user) а сейчас я попробовал так:
joined_status = ChannelUserService.joined_channels_status(Guardian.Plug.current_resource(conn))
https://gist.github.com/PavelZX/110c54c4d38a47157aaf961f94b22711
источник

PZ

Pavel Zachesa in Эликсир и Вунш
источник
2019 February 25

PZ

Pavel Zachesa in Эликсир и Вунш
Как мне по id пользователя получить структуру user?
источник

A

Anton in Эликсир и Вунш
Тебе надо реализовать вот эти методы из доки
источник

A

Anton in Эликсир и Вунш
Screenshot (25 февр. 2019 г. 8:37:29)
источник

PZ

Pavel Zachesa in Эликсир и Вунш
Есть файл guardian.ex с функцией
 def resource_from_claims(claims) do
   {:ok, %{id: claims["sub"]}}
 end
источник

PZ

Pavel Zachesa in Эликсир и Вунш
Надо её использовать?
источник

PZ

Pavel Zachesa in Эликсир и Вунш
Откуда она возьмёт (claims)?
источник

A

Anton in Эликсир и Вунш
Клаймс ей приходят в качестве аргумента, это пайлоад jwt
источник

A

Anton in Эликсир и Вунш
Ты должен вернуть не id, а именно структуру
источник

A

Anton in Эликсир и Вунш
Из базы например, по этому id
источник

PZ

Pavel Zachesa in Эликсир и Вунш
Не напрямик же в базу лезть, используется Ecto, как я понимаю.
источник