2014-09-29 4 views
1

Я видел это Rails Devise: How to access sign up page after signed in?, и это сработало. Теперь я хочу знать, как разрешить администратору редактировать некоторых пользователей. Любые входы? Заранее спасибо!Rails Devise: Как администратор сможет редактировать других пользователей?

UPDATE:

Я не создавал модели для администратора, так как я мигрировал админа: булева внутри модели User. И нет необходимости в канканчане. Посмотрите, как я использую администратора:

<% if current_user.admin? %> 
    <!-- do something only the admin is allowed to do--> 
<% else %> 
    <!-- do something by user that can also be done by the admin--> 
<% end %> 
+0

Администратор и Пользователь - отдельные модели? – RedZagogulin

+0

nope. Мне не нужно было создавать какие-либо модели. Я добавил администратор: boolean для моей модели User (через миграцию). – Gotchit

+0

Просто следуйте обычной процедуре, создайте пользовательскую страницу, разрешите администратору редактировать некоторых пользователей и вызвать на нем действие обновления. – Nithin

ответ

2

Вы должны разделить две концепции: auhtentication и authorization. Аутентификация - это когда ваше приложение говорит: «О, я знаю этого пользователя, я видел его раньше, потому что я знаю его электронную почту. Он был здесь, где-то в моей таблице User в db». Авторизация заключается в том, чтобы дать вашим правам пользователя что-то сделать или запретить доступ к некоторым действиям.

Devise - отличная жемчужина для аутентификации (регистрация пользователей, sign_in/sign/out, сеансов, паролей и т. Д.). Devise не имеет авторизации функции.

Итак, у вас есть два способа: 1) система авторизации кода самостоятельно или 2) использовать авторские драгоценные камни. Вот отличный камень для авторизации, который отлично подходит с Devise: Cancan и tutorial от его автора.

+0

Я задал неправильный вопрос. Сожалею. Спасибо тебе за это! Но так как мой админ логичен, мне не нужен cancan. Функция обычных пользователей - только вход в систему/выход из системы. Остальное (CRUD пользователей) находится на руках администратора. – Gotchit

+0

Способ определения вашего администратора (отдельная модель, логическое значение, значение строки/символа, роль и т. Д.) Абсолютно не связан с ограниченными/разрешенными действиями. Cancan не назначает/определяет роль пользователя, а пользовательские способности делать или не делать что-то. В любом случае, это будет cancan или нет, вы должны реализовать этот алгоритм: 1) проверить, является ли current_user администратором; 2) определить метод, основанный на логическом условии «turn current_user away UNLESS current_user является администратором»; 3) используйте этот метод в вашем UserController (в вашем случае для каждого действия, кроме: index,: show,: new,: create). – RedZagogulin

+0

Кроме того, я не рекомендую cancan, так как он не поддерживается около года. Используйте его преемник 'cancancan' или' pundit' –

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