2013-07-22 59 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 
相關問題