2013-07-22 80 views
1
class Api::V1::SessionsController < Devise::SessionsController 
    def create 
    if User.find_by(member_id: params[:user][:member_id]) 
     self.resource = warden.authenticate!(auth_options) 
     sign_in(resource_name, resource) 
     resource.reset_authentication_token! 
     resource.save! 
    else 
     error :not_found 
    end 
    end 
end 

如何改变创建动作不是只与角色的用户可以肯定的:“member”可以登录并例如管理员(user.role => :admin)得到了error => :unauthorized如何在一个操作中查找并检查用户是否是成员?

+0

您是否在使用gem作为角色?如果是这样的话?如果没有,您是否有方法返回用户是否具有特定角色? – stephenmurdoch

+0

我正在使用CanCan。我有方法=>'User.last.role ==:member'' – tomekfranek

回答

0

懒verison将引发异常,当发现用户不是成员,但好的设计不应该使用例外来处理正常情况。

也许这样吗?

user = User.find_by(member_id: params[:user][:member_id]) 
return error :unauthorized unless user.role == :member 

if user 
    ... 
else 
    ... 
end 
相关问题