Class: Hydra::AccessControls::AccessRight

Inherits:
Object
  • Object
show all
Defined in:
app/models/concerns/hydra/access_controls/access_right.rb

Constant Summary collapse

PERMISSION_TEXT_VALUE_PUBLIC =

What these groups are called in the Hydra rightsMetadata XML:

'public'.freeze
PERMISSION_TEXT_VALUE_AUTHENTICATED =
'registered'.freeze
VISIBILITY_TEXT_VALUE_PUBLIC =

The values that get drawn to the page

'open'.freeze
VISIBILITY_TEXT_VALUE_EMBARGO =
'open_with_embargo_release_date'.freeze
VISIBILITY_TEXT_VALUE_AUTHENTICATED =
'authenticated'.freeze
VISIBILITY_TEXT_VALUE_PRIVATE =
'restricted'.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(permissionable) ⇒ AccessRight

Returns a new instance of AccessRight.

Examples:

file = GenericFile.find('sufia:1234')
access = Sufia::AccessRight.new(file)

Parameters:

  • permissionable (#visibility, #permissions)


18
19
20
# File 'app/models/concerns/hydra/access_controls/access_right.rb', line 18

def initialize(permissionable)
  @permissionable = permissionable
end

Instance Attribute Details

#permissionableObject (readonly)

Returns the value of attribute permissionable.



22
23
24
# File 'app/models/concerns/hydra/access_controls/access_right.rb', line 22

def permissionable
  @permissionable
end

Instance Method Details

#authenticated_only?Boolean Also known as: authenticated_only_access?

Returns:

  • (Boolean)


42
43
44
45
46
# File 'app/models/concerns/hydra/access_controls/access_right.rb', line 42

def authenticated_only?
  return false if open_access?
  has_permission_text_for?(PERMISSION_TEXT_VALUE_AUTHENTICATED) ||
    has_visibility_text_for?(VISIBILITY_TEXT_VALUE_AUTHENTICATED)
end

#open_access?Boolean

Returns:

  • (Boolean)


27
28
29
30
31
32
# File 'app/models/concerns/hydra/access_controls/access_right.rb', line 27

def open_access?
  return true if has_visibility_text_for?(VISIBILITY_TEXT_VALUE_PUBLIC)
  # We don't want to know if its under embargo, simply does it have a date.
  # In this way, we can properly inform the label input
  persisted_open_access_permission? && !permissionable.embargo_release_date.present?
end

#open_access_with_embargo_release_date?Boolean

Returns:

  • (Boolean)


34
35
36
37
38
39
40
# File 'app/models/concerns/hydra/access_controls/access_right.rb', line 34

def open_access_with_embargo_release_date?
  return false unless permissionable_is_embargoable?
  return true if has_visibility_text_for?(VISIBILITY_TEXT_VALUE_EMBARGO)
  # We don't want to know if its under embargo, simply does it have a date.
  # In this way, we can properly inform the label input
  persisted_open_access_permission? && permissionable.embargo_release_date.present?
end

#private?Boolean Also known as: private_access?

Returns:

  • (Boolean)


50
51
52
53
54
55
# File 'app/models/concerns/hydra/access_controls/access_right.rb', line 50

def private?
  return false if open_access?
  return false if authenticated_only?
  return false if open_access_with_embargo_release_date?
  true
end