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 (#848)
by Ahmad
03:48
created

Room.random_room_uid()   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
30
  def self.admins_search(string)
31
    active_database = Rails.configuration.database_configuration[Rails.env]["adapter"]
32
    # Postgres requires created_at to be cast to a string
33
    created_at_query = if active_database == "postgresql"
34
      "created_at::text"
35
    else
36
      "created_at"
37
    end
38
39
    search_query = "rooms.name LIKE :search OR rooms.uid LIKE :search OR users.email LIKE :search" \
40
    " OR users.#{created_at_query} LIKE :search"
41
42
    search_param = "%#{string}%"
43
44
    joins(:owner).where(search_query, search: search_param)
45
  end
46
47
  def self.admins_order(column, direction)
48
    # Include the owner of the table
49
    table = joins(:owner)
50
    return table.order(Arel.sql("#{column} #{direction}")) if table.column_names.include?(column) || column == "users.name"
51
    return table
52
  end
53
54
  # Determines if a user owns a room.
55
  def owned_by?(user)
56
    return false if user.nil?
57
    user.rooms.include?(self)
58
  end
59
60
  # Determines the invite path for the room.
61
  def invite_path
62
    "#{Rails.configuration.relative_url_root}/#{CGI.escape(uid)}"
63
  end
64
65
  # Notify waiting users that a meeting has started.
66
  def notify_waiting
67
    ActionCable.server.broadcast("#{uid}_waiting_channel", action: "started")
68
  end
69
70
  private
71
72
  # Generates a uid for the room and BigBlueButton.
73
  def setup
74
    self.uid = random_room_uid
75
    self.bbb_id = Digest::SHA1.hexdigest(Rails.application.secrets[:secret_key_base] + Time.now.to_i.to_s).to_s
76
    self.moderator_pw = RandomPassword.generate(length: 12)
77
    self.attendee_pw = RandomPassword.generate(length: 12)
78
  end
79
80
  # Generates a three character uid chunk.
81
  def uid_chunk
82
    charset = ("a".."z").to_a - %w(b i l o s) + ("2".."9").to_a - %w(5 8)
83
    (0...3).map { charset.to_a[rand(charset.size)] }.join
84
  end
85
86
  # Generates a random room uid that uses the users name.
87
  def random_room_uid
88
    [owner.name_chunk, uid_chunk, uid_chunk].join('-').downcase
89
  end
90
end
91