2014-03-19 3 views
1

Кто-нибудь попытался добавить переключение ролей пользователей с использованием самописцев authlogic/declarative authorization?Объявление пользовательской авторизации пользователя

Мое требование состоит в том, что пользователь может иметь много ролей (например, автор, учитель) и может переключать роль в приложении.

У меня есть две идеи о том, как я мог бы подойти к этому:

  1. Добавление другого логический атрибут (активный), к user_roles присоединиться таблицы
  2. Копирование коммутируемого ROLE_ID в таблице пользователей и работает от этого

Я прочитал декларативное ридми авторизации и ничего не видно, что, как представляется, будет построен в. Любые идеи будут оценены

ответ

0

Просто посмотрел на это сегодня, и решение достаточно просто. Я пошел с добавлением логического атрибута в мое много-много пользователей user_roles, чтобы избежать дублирования. Присоединиться теперь имеет следующие атрибуты:

id | user_id | role_id | active 

В role_symbols метод в моей модели пользователя, который используется для подключения в authorization_rules.rb DSL теперь выглядит следующим образом:

def role_symbols 
    user_roles.where(:active => true).map do |user_role| 
    user_role.role.name.underscore.to_sym 
    end 
end 

теперь пользователи роль, на которую когда-либо была активна действительность в таблице user_roles.

переключение Пользователь слишком легко (от модели пользователя)

def self.set_active_role(user_id, role_id) 
    UserRole.where(:user_id => user_id).update_all(:active => false) 

    activate_role = UserRole.where(:user_id => user_id, :role_id => role_id).first 
    activate_role.update_attributes(:active => true) 
end 

Думал, что это может помочь кому-то в будущем

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

  • Нет связанных вопросов^_^