2013-03-15 4 views
0

사용자 역할을 정의하는 데 도움이 필요합니다. 자신의 인증을 생성했으며 사용자 지정 인증 작업을하고 있습니다. 그러나 사용자 역할을 정의해야합니다. 나는 내 역할을 창작했지만 나는 그들이해야 할 일과 정확히 진실 된 가치가 있다고 생각하지 않는다.사용자 역할을 정의하는 방법

user.rb : 당신이 당신이 원하는 것을 예 할 수 있어요

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 

...

답변

2

U이 DB에 각 역할에 대한 부울 필드를 배치 할 수 있습니다 권한

에 대한 rolifycancan를 사용하여 상태 머신을 만드는 방법 ( aasm) 기반의 이메일 확인 모델을 표시합니다

user.admin?
// 귀하의 승인 로직이 여기에 있습니다.
end

0

당신은 당신의 컨트롤러처럼 뭔가를 할 수 rolifycancan을 살펴보십시오.

user.add_role :moderator, Forum.first 

cancan :

user.add_role :moderator, Forum 

특정 인스턴스의 역할을 정의합니다

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

특정 클래스 역할을 정의합니다

rolify

쉽게 사용자를위한 역할을 정의 할 수 있습니다 그러면 능력을 정의 할 수 있습니다. 무엇을 의미합니까? user 할 수 있습니다. 그것은 rolify와 정말 잘 작동합니다

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

첫 번째 기능 정의는 관리자가 모든 (즉 read, create, updatedestroy입니다) 관리 할 수있는 정의합니다.

두 번째 능력 정의는 비 관리자가 자신을 관리 할 수 ​​있다고 말합니다. 즉, 내 이메일 주소 만 수정할 수 있습니다. 사용자 기록을 볼 수 없습니다.

모두 gems에 대한 README는 우수하며 추가 읽기와 연결됩니다. 또한 앞으로 수일 내에 rolify, cancan, aasm, omniauth 및 Rails Observers가 포함 된 매우 완벽한 예를 블로깅 할 예정입니다. 이 예는 직접

를 호출 할 수 있도록 이
+0

페이지에서 역할이 admin인지 확인하는 것 같습니다. 각 역할이 수행 할 수있는 작업을 정의하고 싶습니다. 사용자 역할의 유일한 부분이라고 생각합니다. – pwz2000

1

I :

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 
+0

감사하지만 이것들은 사용하지 않는 보석에 대한 해결책입니다. 나는 그 (것)들을 사용하기의 권고를 이해한다. 그러나 나는 처음부터 승인을하고 싶다. 이전에 cancan을 설치하고 사용하기가 쉬웠습니다. 하지만 인증 작동 방식에 대해 더 자세히 알고 싶습니다. – pwz2000

+0

. 'rolify'는 아마도 역할 지원을 위해 건물에 대해 생각할지도 모르는 것들의 예를보기에 좋은 곳일 것입니다. – myitcv

+0

오, 괜찮습니다. 보세요. – pwz2000

관련 문제