2016-11-27 4 views
0

Я немного запутался с авторизацией и аутентификацией на данный момент.Аутентификация и авторизация нескольких пользователей

Прежде всего, мне нужно рассказать вам о моем проекте. Он будет иметь две основные модели: Пользователи и профи. Пользователи - это люди, запрашивающие услугу. Плюсы - это люди, предлагающие услуги. Профессионалы могут иметь очень разные задания и, следовательно, очень разные типы данных, хранящиеся в моем проекте. Я планирую иметь разные модели для различных видов работ, проводимых профессионалами (фотографы, свадебные планировщики ..). Эти модели будут иметь отношения и «собственные» разные другие модели (изображения, добавленные с помощью paperclip, ссылки на веб-сайты ...).

Я думаю, мне нужно использовать драгоценные камни, как для проверки подлинности и авторизации (у меня есть Разрабатывают и Пандит в виду)

теперь мои вопросы:

  • Я бы например, иметь доступ ко всем пользователям и профайлам через одну и ту же форму. Я думаю, это очень девизная вещь. Хотя, прочитав немного о Devise, кажется, что для каждого из моделей есть логин. но эта тема упоминает Devise «groups»
    https://gorails.com/forum/devise-with-multiple-user-models-with-single-login-form Будет ли это определенно решить мою проблему с одним логином входа?

  • Я хотел бы, чтобы каждый из подмоделей «Про» показывал предварительный просмотр своих записей любому типу пользователей или даже гостям. Но при регистрации в Pro они могут получить доступ к расширенному представлению профиля с дополнительной информацией (все персональные данные, которые могут быть изменены, запросы цены от пользователей и т. Д.). Можете ли вы подтвердить, что здесь работает Pundit?

ответ

1

Pundit - идеальный выбор для достижения вашей второй точки. Вы можете ограничить определенные действия (например, редактирование/обновление), которые могут быть достигнуты только Pro, которому принадлежит учетная запись. Код для этих действий в ProPolicy будет выглядеть примерно так:

def edit? 
    update? 
end 

def update? 
    record.pro == user 
end 

С точки зрения вашего вопроса о проверке подлинности множественным модели пользователя с помощью Завещание, вы можете объяснить, почему вы настроены на наличие только один вид входа для пользователей, так? У вас может быть раскрывающийся список на кнопке входа, где пользователь может выбрать, является ли он обычным пользователем или Pro. Или вы даже можете установить флажок/выбрать в форме, где они выбирают тип входа, который они хотят использовать.

Если нет, то вам нужно будет как-то проверить вашу базу данных, чтобы узнать, существует ли логин в таблицах Pro или User. Однако, я полагаю, это означало бы, что вы не можете иметь учетную запись Pro и пользователя, используя тот же адрес электронной почты.

+0

Вы правы, я даже не думал о том, что Pro также может быть пользователем. Я думаю, что определенно лучше разделить их и сделать специальную страницу приветствия для профессионалов. И теперь я установил и узнал о Devise, я могу погрузиться в Pundit! Tks – Maxence

Смежные вопросы