Added role helper methods, and set some abilities
This commit is contained in:
@@ -4,7 +4,9 @@ class Ability
|
||||
def initialize(user)
|
||||
user ||= User.new
|
||||
|
||||
can :manage, :all if user.admin?
|
||||
can :manage, :all if user.admin?
|
||||
|
||||
can :manage, Post if user.moderator?
|
||||
|
||||
can :read, Category, :state => true
|
||||
can :read, Forum, :state => true, :category => { :state => true }
|
||||
@@ -16,5 +18,7 @@ class Ability
|
||||
|
||||
can :create, Post, :topic => { :locked => false } unless user.new_record?
|
||||
can :create, Topic unless user.new_record?
|
||||
|
||||
cannot :read, :all if user.banned?
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
class User < ActiveRecord::Base
|
||||
include Gravtastic
|
||||
|
||||
before_create :set_default_role
|
||||
|
||||
belongs_to :role
|
||||
|
||||
gravtastic :size => 165, :filetype => :png, :rating => 'R'
|
||||
@@ -18,7 +20,24 @@ class User < ActiveRecord::Base
|
||||
has_many :topics, :dependent => :destroy
|
||||
has_many :posts, :dependent => :destroy
|
||||
|
||||
def registered?
|
||||
self.role == Role.find_by_name('registered')
|
||||
end
|
||||
|
||||
def banned?
|
||||
self.role == Role.find_by_name('banned')
|
||||
end
|
||||
|
||||
def moderator?
|
||||
self.role == Role.find_by_name('moderator')
|
||||
end
|
||||
|
||||
def admin?
|
||||
self.is_admin
|
||||
self.role == Role.find_by_name('admin')
|
||||
end
|
||||
|
||||
private
|
||||
def set_default_role
|
||||
self.role ||= Role.find_by_name('registered')
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user