0

ユーザーの役割の定義についてサポートが必要です。私は独自の認証を作成し、カスタム承認に取り組んでいます。ただし、ユーザーの役割を定義する必要があります。私は自分の役割を作成しましたが、正確に何をすべきかという真の価値があるとは思いません。

ユーザー.rb:

class User < ActiveRecord::Base
  has_secure_password
  attr_accessible :password_confirmation, :about_me, :feet, :inches, :password, :birthday, :career, :children, :education, :email, :ethnicity, :gender, :height, :name, :password_digest, :politics, :religion, :sexuality, :user_drink, :user_smoke, :username, :zip_code
  validates_uniqueness_of :email
  validates_presence_of :password, :on => :create
  before_create { generate_token(:auth_token) }
  ROLES = %w[admin user guest banned]


  def send_password_reset
    generate_token(:password_reset_token)
    self.password_reset_sent_at = Time.zone.now
    save!
    UserMailer.password_reset(self).deliver
  end

  def generate_token(column)
    begin
      self[column] = SecureRandom.urlsafe_base64
    end while User.exists?(column => self[column])
  end
end
4

3 に答える 3

1

とを見てみrolifyますcancan

rolifyユーザーの役割を簡単に定義できます。

user = User.find(1)
user.add_role :admin

特定のクラスで役割を定義します。

user.add_role :moderator, Forum

特定のインスタンスで役割を定義します。

user.add_role :moderator, Forum.first

cancan次に、能力、つまりaができることを定義userできます。それは本当にうまく機能しrolifyます:

if user.has_role? :admin, User
  can :manage, :all
else
  can :manage, User, :id => user.id
end

read最初の能力定義は、管理create者がすべて(つまり、、、、、updateおよび)を管理できることを定義しdestroyます。

2番目の能力定義は、非管理者は自分自身しか管理できないことを示しています。つまり、自分のメールアドレスしか編集できません。私はあなたのユーザー記録を見ることさえできません!

両方のREADMEgemsは優れており、さらに読むためのリンクです。rolifyまた、今後数日cancanaasm、、、、omniauthおよびRailsObserversを含むかなり完全な例についてブログを書く予定です。この例では、パーミッションを使用して、ステートマシン(aasm)ベースの電子メール確認モデルを作成する方法を示します。rolifycancan

于 2013-03-15T18:38:00.483 に答える
0

あなたはあなたのコントローラーでそのようなことをすることができます:

class ResourcesController < ApplicationController
  before_filter :check_current_user_is_admin, :only => [:new,...]

  ...

  private

  def check_current_user_is_admin
    return if current_user.role == 'admin'
    redirect_to error_page
  end
end

それは一例です、あなたはあなたがやりたいことをすることができます...

于 2013-03-15T18:03:51.813 に答える