Class: Adeia::Database

Inherits:
Object
  • Object
show all
Defined in:
lib/adeia/database.rb

Direct Known Subclasses

Authorization

Instance Method Summary collapse

Constructor Details

#initialize(controller, action, token, resource, user) ⇒ Database

Returns a new instance of Database.



5
6
7
8
9
10
11
# File 'lib/adeia/database.rb', line 5

def initialize(controller, action, token, resource, user)
  @controller = controller
  @action = action
  @token = token
  @resource = resource
  @user = user
end

Instance Method Details

#action_rightsObject



36
37
38
39
40
# File 'lib/adeia/database.rb', line 36

def action_rights
  @action_rights ||= Adeia::Permission.joins(:actions, :element).where(owner: owners, adeia_elements: {name: @controller}, adeia_actions: {name: @action})
  @action_resource_ids ||= @action_rights.pluck(:resource_id).compact
  return { rights: @action_rights, resource_ids: @action_resource_ids }
end

#create_rightsObject



19
20
21
22
# File 'lib/adeia/database.rb', line 19

def create_rights
  @create_rights ||= Adeia::Permission.joins(:element).where(owner: owners, create_right: true, adeia_elements: {name: @controller})
  return { rights: @create_rights }
end

#destroy_rightsObject



30
31
32
33
34
# File 'lib/adeia/database.rb', line 30

def destroy_rights
  @destroy_rights ||= Adeia::Permission.joins(:element).where(owner: owners, destroy_right: true, adeia_elements: {name: @controller})
  @destroy_resource_ids ||= @destroy_rights.pluck(:resource_id).compact
  return { rights: @destroy_rights, resource_ids: @destroy_resource_ids }
end

#ownersObject



57
58
59
# File 'lib/adeia/database.rb', line 57

def owners
  @owners ||= user_groups.push @user
end

#read_rightsObject



13
14
15
16
17
# File 'lib/adeia/database.rb', line 13

def read_rights
  @read_rights ||= Adeia::Permission.joins(:element).where(owner: owners, read_right: true, adeia_elements: {name: @controller})
  @read_resource_ids ||= @read_rights.pluck(:resource_id).compact
  return { rights: @read_rights, resource_ids: @read_resource_ids }
end

#token_rights(right_name) ⇒ Object



42
43
44
45
46
47
48
49
50
51
# File 'lib/adeia/database.rb', line 42

def token_rights(right_name)
  @permission_token ||= Adeia::Token.find_by(token: @token)
  if @permission_token && @permission_token.is_valid?
    @token_rights ||= Adeia::Permission.joins(:element).where(id: @permission_token.adeia_permission_id, adeia_elements: { name: @controller }, "#{right_name}_right": true)
    @token_resource_ids ||= @token_rights.pluck(:resource_id).compact
    return { rights: @token_rights, resource_ids: @token_resource_ids }
  else
    return { rights: Adeia::Permission.none }
  end
end

#update_rightsObject



24
25
26
27
28
# File 'lib/adeia/database.rb', line 24

def update_rights
  @update_rights ||= Adeia::Permission.joins(:element).where(owner: owners, update_right: true, adeia_elements: {name: @controller})
  @update_resource_ids ||= @update_rights.pluck(:resource_id).compact
  return { rights: @update_rights, resource_ids: @update_resource_ids }
end

#user_groupsObject



53
54
55
# File 'lib/adeia/database.rb', line 53

def user_groups
  @user_groups ||= Adeia::Group.joins(:group_users).where(adeia_group_users: { user_id: @user.id })
end