Module: StoryTeller::PrivilegeGrants

Defined in:
lib/story_teller/privileges.rb

Overview

module PrivilegeGrants

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.modeObject

Returns the value of attribute mode.



69
70
71
# File 'lib/story_teller/privileges.rb', line 69

def mode
  @mode
end

Class Method Details

.grant_session(subject, privilege) ⇒ Object



71
72
73
74
75
76
# File 'lib/story_teller/privileges.rb', line 71

def grant_session(subject, privilege)
  subject = StoryTeller::Privileges.subject_for(subject)
  return nil if subject.nil?

  @session_grants[identity(subject)].add(privilege.to_sym)
end

.granted?(subject, privilege) ⇒ Boolean

Returns:

  • (Boolean)


92
93
94
95
96
97
98
# File 'lib/story_teller/privileges.rb', line 92

def granted?(subject, privilege)
  privilege = privilege.to_sym

  session_granted?(subject, privilege) ||
    (privilege == :builder && session_granted?(subject, :admin)) ||
    persistent_granted_under_mode?(subject, privilege)
end

.persistent_granted?(subject, privilege) ⇒ Boolean

Returns:

  • (Boolean)


85
86
87
88
89
90
# File 'lib/story_teller/privileges.rb', line 85

def persistent_granted?(subject, privilege)
  subject = StoryTeller::Privileges.subject_for(subject)
  return false unless subject.is_a?(StoryTeller::PrivilegedIdentity)

  subject.privilege?(privilege.to_sym)
end

.session_granted?(subject, privilege) ⇒ Boolean

Returns:

  • (Boolean)


78
79
80
81
82
83
# File 'lib/story_teller/privileges.rb', line 78

def session_granted?(subject, privilege)
  subject = StoryTeller::Privileges.subject_for(subject)
  return false if subject.nil?

  @session_grants[identity(subject)].include?(privilege.to_sym)
end