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
Pull Request — master (#912)
by Ahmad
05:05
created

Room.shared_users()   A

Complexity

Conditions 1

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
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
require 'bbb_api'
20
21
class Room < ApplicationRecord
22
  include Deleteable
23
24
  before_create :setup
25
26
  validates :name, presence: true
27
28
  belongs_to :owner, class_name: 'User', foreign_key: :user_id
29
  has_many :shared_access
30
31
  # Determines if a user owns a room.
32
  def owned_by?(user)
33
    return false if user.nil?
34
    user.rooms.include?(self)
35
  end
36
37
  def shared_users
38
    User.where(id: shared_access.pluck(:user_id))
39
  end
40
41
  def shared_with?(user)
42
    return false if user.nil?
43
    shared_users.include?(user)
44
  end
45
46
  # Determines the invite path for the room.
47
  def invite_path
48
    "#{Rails.configuration.relative_url_root}/#{CGI.escape(uid)}"
49
  end
50
51
  # Notify waiting users that a meeting has started.
52
  def notify_waiting
53
    ActionCable.server.broadcast("#{uid}_waiting_channel", action: "started")
54
  end
55
56
  private
57
58
  # Generates a uid for the room and BigBlueButton.
59
  def setup
60
    self.uid = random_room_uid
61
    self.bbb_id = Digest::SHA1.hexdigest(Rails.application.secrets[:secret_key_base] + Time.now.to_i.to_s).to_s
62
    self.moderator_pw = RandomPassword.generate(length: 12)
63
    self.attendee_pw = RandomPassword.generate(length: 12)
64
  end
65
66
  # Generates a three character uid chunk.
67
  def uid_chunk
68
    charset = ("a".."z").to_a - %w(b i l o s) + ("2".."9").to_a - %w(5 8)
69
    (0...3).map { charset.to_a[rand(charset.size)] }.join
70
  end
71
72
  # Generates a random room uid that uses the users name.
73
  def random_room_uid
74
    [owner.name_chunk, uid_chunk, uid_chunk].join('-').downcase
75
  end
76
end
77