@Tolych

Как лучше организовать модели пользователя в sequelize?

Добрый день!
Если вы не залогинены на toster.ru у вас есть возможность зарегистрироваться, войти со своим логином и паролем, либо войти через соц.сети.

Стало интересно каким образом в этом случае создаются записи о пользователях и как их правильно создать.
Например, я регистрируюсь на сайте через mail и password. В этом случае пользователь создается через модель пользователя User.
А если мы логинемся через соц.сети, каким образом создать пользователя, ведь не все соц.сети предоставляют email и пароль тогда каким должен быть в этом случае? Необходимо ли, для каждого типа авторизации создавать свою модель, для фейсбука это будет facebook, со своим набором полей, для twitter своя модель?
  • Вопрос задан
  • 601 просмотр
Пригласить эксперта
Ответы на вопрос 1
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Плодить модели по числу OAuth-провайдеров смысла нет. Обычно, как я понимаю, SSO реализуется путем поиска в таблице юзера с таким емейлом. Таким образом, юзер может логиниться и регаться через что угодно, если указан один и тот же адрес. Достаточно поля для email и пароля. Можно по желанию добавить поля типа facebookId, twitterId и т.п., и еще какой-то опциональной инфой, которую можно вытащить. Я так делал и это работает. Если у вас Postgre, то неструктурированную/опциональную инфу можно класть в ячейку типа JSON.

С теми провайдерами, которые не отдают почту, сложнее. С точки зрения UI это работает так: в личном кабинете есть кнопочка типа «привязать аккаунт Steam», по ее нажатию юзер редиректится на стимовскую авторизацию. Теперь наша задача связать нашего юзера, с известным емейлом, с таким-то айдишником, который отдал Steam — сессии нам помогут.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы