Class: HubSsoLib::Permissions
- Inherits:
-
Object
- Object
- HubSsoLib::Permissions
- Defined in:
- lib/hub_sso_lib.rb
Overview
Class: Permissions #
(C) Hipposoft 2006 #
#
Purpose: Methods to help, in conjunction with Roles, determine the #
access a particular user is granted. #
#
Author: A.D.Hodgkinson #
#
History: 17-Oct-2006 (ADH): Adapted from Clubhouse. #
20-Oct-2006 (ADH): Integrated into HubSsoLib. #
Instance Method Summary collapse
-
#initialize(pmap) ⇒ Permissions
constructor
Initialize a permissions object.
-
#permitted?(roles, action) ⇒ Boolean
Does the given Roles object grant permission for the given action, expressed as a string or symbol? Returns ‘true’ if so, else ‘false’.
Constructor Details
#initialize(pmap) ⇒ Permissions
Initialize a permissions object. The map is a hash which maps action names, expressed as symbols, to roles, expressed as individual symbols, equivalent strings, or arrays of multiple strings or symbols. Use ‘nil’ to indicate permission for the general public - no login required - or simply omit the action (unlisted actions are permitted).
Example mapping for a generic controller:
:new => [ :admin, :webmaster, :privileged, :normal ],
:create => [ :admin, :webmaster, :privileged, :normal ],
:edit => [ :admin, :webmaster, :privileged, :normal ],
:update => [ :admin, :webmaster, :privileged, :normal ],
:delete => [ :admin, :webmaster, :privileged ],
:list => nil,
:show => nil
328 329 330 |
# File 'lib/hub_sso_lib.rb', line 328 def initialize(pmap) = pmap end |
Instance Method Details
#permitted?(roles, action) ⇒ Boolean
Does the given Roles object grant permission for the given action, expressed as a string or symbol? Returns ‘true’ if so, else ‘false’.
If a role is given as some other type, an attempt is made to convert it to a Roles object internally (so you could pass a role symbol, string, array of symbols or strings, or comma-separated string).
Passing an empty roles string will tell you whether or not the action requires login. Only actions not in the permissions list or those with a ‘nil’ list of roles will generate a result ‘true’, since any other actions will require your empty roles string to include at least one role (which it obviously doesn’t).
345 346 347 348 349 350 351 352 |
# File 'lib/hub_sso_lib.rb', line 345 def permitted?(roles, action) action = action.to_s.intern roles = roles.to_authenticated_roles return true unless .include?(action) return true if [action].nil? return roles.include?([action]) end |