class Garage::Permissions

Attributes

resource_class[RW]
user[RW]

Public Class Methods

new(user, resource_class, permissions = { read: :forbidden, write: :forbidden }) click to toggle source
# File lib/garage/permissions.rb, line 28
def initialize(user, resource_class, permissions = { read: :forbidden, write: :forbidden })
  @user = user
  @resource_class = resource_class
  @perms = permissions
end

Public Instance Methods

authorize!(action) click to toggle source
# File lib/garage/permissions.rb, line 34
def authorize!(action)
  exists?          or raise PermissionError.new(user, action, resource_class, :not_found)
  permits?(action) or raise PermissionError.new(user, action, resource_class, :forbidden)
end
deleted!() click to toggle source
# File lib/garage/permissions.rb, line 43
def deleted!
  @perms[:deleted] = true
end
exists?() click to toggle source
# File lib/garage/permissions.rb, line 47
def exists?
  !@perms[:deleted]
end
for(action) click to toggle source
# File lib/garage/permissions.rb, line 39
def for(action)
  Permission.new(@user, action, @perms[action])
end
forbids!(*actions) click to toggle source
# File lib/garage/permissions.rb, line 57
def forbids!(*actions)
  actions.each do |action|
    @perms[action] = :forbidden
  end
end
permits!(*actions) click to toggle source
# File lib/garage/permissions.rb, line 51
def permits!(*actions)
  actions.each do |action|
    @perms[action] = :ok
  end
end
permits?(action) click to toggle source
# File lib/garage/permissions.rb, line 63
def permits?(action)
  self.for(action).allowed?
end
readable?() click to toggle source
# File lib/garage/permissions.rb, line 67
def readable?
  permits? :read
end
writable?() click to toggle source
# File lib/garage/permissions.rb, line 71
def writable?
  permits? :write
end