0

ユーザーがログインしている状態にアクセスしようとしています。アカウントが無効になっている場合、フラッシュメッセージでログインページにリダイレクトする必要があります。このようなことを試みています

def after_sign_in_path_for(resource)
 if resource.group.slug == 'a'
   @u = User.find_by_email(resource.email)
   if @u.member.state_id == "someid"
     '/logout'
     flash[:notice]= "My message."
   else
     a_root_path
   end
 elsif resource.group.slug == 'b'
   b_root_path
 elsif resource.group.slug == 'c'
   c_root_path
 else
   new_user_session_path
 end

end

ユーザーのログインを停止し、そのスコープの他のすべてのルートをブロックするにはどうすればよいですか?

4

2 に答える 2

0

ユーザーをサインアウトしてみませんか。次のように

def after_sign_in_path_for(resource)
 if resource.group.slug == 'a'
  @u = User.find_by_email(resource.email)
  if @u.member.state_id == "someid"
    sign_out resource
    '/users/sign_in' (or root_path based on your requirement)
    flash[:notice]= "My message."
  else
    a_root_path
  end
 elsif resource.group.slug == 'b'
  b_root_path
 elsif resource.group.slug == 'c'
  c_root_path
 else
  new_user_session_path
 end
于 2013-01-09T07:53:18.147 に答える
0

after_sign_in_path_for メソッドの戻り値は、リダイレクト先の URL である必要があります。したがって、自分で redirect_to を呼び出す必要はありません。

if @u.member.state_id == "someid"
  flash[:notice]= "My message."
  '/logout'
else
  a_root_path
end

(未検証)

于 2013-01-09T06:25:50.437 に答える