Class: NonGrata::Authorization

Inherits:
Object
  • Object
show all
Defined in:
lib/non_grata/authorization.rb

Class Method Summary collapse

Class Method Details

.create(&block) ⇒ Object



3
4
5
6
# File 'lib/non_grata/authorization.rb', line 3

def self.create(&block) 
    @schemes = [Scheme.new(:main)] 
    instance_eval(&block)
end

.method_missing(sym, *args, &block) ⇒ Object



47
48
49
50
# File 'lib/non_grata/authorization.rb', line 47

def self.method_missing(sym, *args, &block) 
    return schemes.find{|i| i.name = sym.to_s.sub('_scheme','')} if sym.to_s =~ /[a-z]+_scheme/
    # raise Error  "#{sym} #{args.inspect}"
end

.privilege(resource, action) ⇒ Object



8
9
10
# File 'lib/non_grata/authorization.rb', line 8

def self.privilege(resource, action) 
    schemes.first.privileges << Privilege.new(resource, action)
end

.privilegesObject



16
17
18
# File 'lib/non_grata/authorization.rb', line 16

def self.privileges
    main_scheme.privileges
end

.role(name, &block) ⇒ Object



12
13
14
# File 'lib/non_grata/authorization.rb', line 12

def self.role(name,&block)
    main_scheme.role(name, &block)
end

.roles(role_name = nil) ⇒ Object



35
36
37
# File 'lib/non_grata/authorization.rb', line 35

def self.roles(role_name=nil)
    main_scheme.roles(role_name)
end

.scheme(name, options = nil, &block) ⇒ Object



39
40
41
42
43
44
45
# File 'lib/non_grata/authorization.rb', line 39

def self.scheme(name, options=nil, &block)
    scheme = Scheme.new(name, options)
    if block_given?
        scheme.config(&block)
    end
    schemes << scheme
end

.schemes(name = nil) ⇒ Object

returns either an array of all schemes or returns a specific scheme by name Ex: Authorization.schemes <- returns array of all schemes Authorization.schemes(:main) <- returns the scheme named ‘main’



26
27
28
29
30
31
32
33
# File 'lib/non_grata/authorization.rb', line 26

def self.schemes(name = nil)
    name = name if name.is_a? Symbol
    name = name.to_sym if name.is_a? String

    @schemes ||= [Scheme.new(:main, options)]
    return @schemes if name.nil?
    return schemes.find{|i| i.name == name}
end