GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — v2.4-alpha ( 84c1dc...394ce8 )
by Ahmad
04:18
created

Role.get_permission()   A

Complexity

Conditions 3

Size

Total Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
c 0
b 0
f 0
dl 0
loc 15
rs 9.65
1
# frozen_string_literal: true
2
3
# BigBlueButton open source conferencing system - http://www.bigbluebutton.org/.
4
#
5
# Copyright (c) 2018 BigBlueButton Inc. and by respective authors (see below).
6
#
7
# This program is free software; you can redistribute it and/or modify it under the
8
# terms of the GNU Lesser General Public License as published by the Free Software
9
# Foundation; either version 3.0 of the License, or (at your option) any later
10
# version.
11
#
12
# BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
13
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
14
# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
15
#
16
# You should have received a copy of the GNU Lesser General Public License along
17
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
18
19
class Role < ApplicationRecord
20
  has_and_belongs_to_many :users, join_table: :users_roles
21
  has_many :role_permissions
22
23
  default_scope { order(:priority) }
24
  scope :by_priority, -> { order(:priority) }
25
  scope :editable_roles, ->(provider) { where(provider: provider).where.not(name: %w[super_admin denied pending]) }
26
27
  RESERVED_ROLE_NAMES = %w[super_admin admin pending denied user]
28
29
  def self.duplicate_name(name, provider)
30
    RESERVED_ROLE_NAMES.include?(name) || Role.exists?(name: name, provider: provider)
31
  end
32
33
  def self.create_default_roles(provider)
34
    Role.create(name: "user", provider: provider, priority: 1, colour: "#868e96")
35
        .update_all_role_permissions(can_create_rooms: true)
36
    Role.create(name: "admin", provider: provider, priority: 0, colour: "#f1c40f")
37
        .update_all_role_permissions(can_create_rooms: true, send_promoted_email: true,
38
      send_demoted_email: true, can_edit_site_settings: true,
39
      can_edit_roles: true, can_manage_users: true)
40
    Role.create(name: "pending", provider: provider, priority: -1, colour: "#17a2b8").update_all_role_permissions
41
    Role.create(name: "denied", provider: provider, priority: -1, colour: "#343a40").update_all_role_permissions
42
    Role.create(name: "super_admin", provider: provider, priority: -2, colour: "#cd201f")
43
        .update_all_role_permissions(can_create_rooms: true,
44
      send_promoted_email: true, send_demoted_email: true, can_edit_site_settings: true,
45
      can_edit_roles: true, can_manage_users: true)
46
  end
47
48
  def self.create_new_role(role_name, provider)
49
    # Create the new role with the second highest priority
50
    # This means that it will only be more important than the user role
51
    # This also updates the user role to have the highest priority
52
    role = Role.create(name: role_name, provider: provider)
53
    user_role = Role.find_by(name: 'user', provider: provider)
54
55
    role.priority = user_role.priority
56
    user_role.priority += 1
57
58
    role.save!
59
    user_role.save!
60
61
    role
62
  end
63
64
  def update_all_role_permissions(permissions = {})
65
    update_permission("can_create_rooms", permissions[:can_create_rooms].to_s)
66
    update_permission("send_promoted_email", permissions[:send_promoted_email].to_s)
67
    update_permission("send_demoted_email", permissions[:send_demoted_email].to_s)
68
    update_permission("can_edit_site_settings", permissions[:can_edit_site_settings].to_s)
69
    update_permission("can_edit_roles", permissions[:can_edit_roles].to_s)
70
    update_permission("can_manage_users", permissions[:can_manage_users].to_s)
71
  end
72
73
  # Updates the value of the permission and enables it
74
  def update_permission(name, value)
75
    permission = role_permissions.find_or_create_by!(name: name)
76
77
    permission.update_attributes(value: value, enabled: true)
78
  end
79
80
  # Returns the value if enabled or the default if not enabled
81
  def get_permission(name, return_boolean = true)
82
    permission = role_permissions.find_or_create_by!(name: name)
83
84
    value = if permission[:enabled]
85
        permission[:value]
86
    else
87
      "false"
88
    end
89
90
    if return_boolean
91
      value == "true"
92
    else
93
      value
94
    end
95
  end
96
end
97