Class: Permission

Inherits:
Sequel::Model
  • Object
show all
Includes:
ASModel
Defined in:
backend/app/model/permission.rb

Class Method Summary (collapse)

Methods included from ASModel

all_models, included, update_publish_flag, update_suppressed_flag

Methods included from JSONModel

JSONModel, #JSONModel, add_error_handler, all, allow_unmapped_enum_value, backend_url, client_mode?, custom_validations, destroy_model, enum_default_value, enum_values, handle_error, init, load_schema, #models, models, parse_jsonmodel_ref, parse_reference, repository, repository_for, schema_src, set_repository, strict_mode, strict_mode?, with_repository

Class Method Details

+ (Object) define(code, description, opts = {})



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'backend/app/model/permission.rb', line 20

def self.define(code, description, opts = {})
  if opts[:implied_by]
    # Derived permissions aren't actually stored in the database: we just add
    # them to the user's list of permissions at query time.
    @derived_permissions << opts.merge(:permission_code => code,
                                       :description => description)

    return
  end

  opts[:level] ||= "repository"

  opts[:system] = (opts[:system] ? 1 : 0)

  permission = (Permission[:permission_code => code] or
                Permission.create(opts.merge(:permission_code => code,
                                             :description => description)))

  # Admin users automatically get everything
  admins = Group.any_repo[:group_code => Group.ADMIN_GROUP_CODE]
  admins.grant(permission.permission_code)
end

+ (Boolean) derived?(code)

Returns:

  • (Boolean)


9
10
11
# File 'backend/app/model/permission.rb', line 9

def self.derived?(code)
  @derived_permissions.any?{|p| p[:permission_code].casecmp(code) == 0}
end

+ (Object) derived_permissions_for(code)



14
15
16
17
# File 'backend/app/model/permission.rb', line 14

def self.derived_permissions_for(code)
  @derived_permissions.select {|p| p[:implied_by].casecmp(code) == 0}.
                       map {|p| p[:permission_code]}
end