forked from External/greenlight
Merge v2.7-alpha (#1951)
* Fix wrong conditional (reported by LGTM) (#1477)
Signed-off-by: Stefan Weil <sw@weilnetz.de>
Co-authored-by: Ahmad Farhat <ahmad.af.farhat@gmail.com>
* Bump rack from 2.2.2 to 2.2.3 (#1839)
Bumps [rack](https://github.com/rack/rack) from 2.2.2 to 2.2.3.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/v2.2.2...2.2.3)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* [FIX] Unable to edit long recording names #1776 (#1780)
* Allow to set a filter for LDAP authentication
* [FIX] Unable to edit long recording names #1776
Co-authored-by: François Ménabé <francois.menabe@unistra.fr>
Co-authored-by: farhatahmad <ahmad.af.farhat@gmail.com>
* Desgin for Manage Users Tabs (#1777)
* Update _subtitle.html.erb
* Update _manage_users_tags.html.erb
* Update admins.scss
* Update _primary_themes.scss
* Update _manage_users_tags.html.erb
* Minor style changes to manage users (#1845)
* Maintenance banner moved to admin site (#1775)
* initial
* finish
* travis fixes
* travis again
* not required
* Co-authored-by: Tobias Fiebig <t.fiebig@tudelft.nl> (#1296)
Co-authored-by: Ahmad Farhat <ahmad.af.farhat@gmail.com>
* Enhance Room OpenGraph Metadata (#1601)
* Revert "Enhance Room OpenGraph Metadata (#1601)" (#1852)
This reverts commit 3b007c233a
.
* GRN2-xx: Tab title now displays the current page name (#1853)
* Tab title now displays the current page name
* Added page title for the rest of the pages
* Split Site Settings into 3 different tabs (#1858)
* Split Site Settings into 3 different tabs
* Fix copyright
* Added redirect to correct tab
* Make sure settings are displaying when they should
* Update en.yml (#1857)
* Build images for alpha branches (#1867)
* Upgraded jquery to latest version (#1896)
* Added favicon tag (#1898)
* Fixed XSS issue with role name (#1899)
* Update path for coloring redirect (#1908)
* Added a fourth section to the room uid (#1910)
* Fixed issue with insecure room sharing removal (#1914)
* Fixes typo (#1917)
Fixes typo: successfully was written incorrect.
* Fixed order of rooms in server rooms (#1915)
* Change default room sort to latest activity (#1919)
* GRN2-xx: Small changes/improvements to the recording settings (#1851)
* Small changes/improvements to the recording settings
* Replaced room warning with info flash
* Added global setting to enable/disable the recording consent feature
* Replace Legal with Terms (#1931)
* Added a more friendly OpenGraph description when invited to join a room (#1932)
* Fixed issue causing maintenance banner not to hide correctly (#1933)
* Hide recording menu and recording list when it is disabled (#1935)
* Hide recording menu and recording list when it is disabled
* Hide recording list when disabled
* GRN2-xx: Added an auto-refresh after 2 mins while waiting for room to start (#1947)
* Added an auto-refresh after 2 mins while waiting for room to start
* Fixed random issue with test case
* GRN2-xx: Added ability to preupload presentations to rooms (#1895)
* Added ability to preupload presentations to rooms (#1868)
* Added setting to site settings and allowed admins to change the presentation
* Added AWS S3 and GCS Storage ENV variables
* Added check to ensure file extension is correct
* Added icon to remove presentation
* Added testcases for preupload
* Add nginx redirect to solve issue with relative root
* Record title, instead of room name, in the popup (#1924)
* Update _public_recording_row.html.erb
* Update _recording_row.html.erb
Co-authored-by: Stefan Weil <sw@weilnetz.de>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: beckerr-rzht <beckerr@hochschule-trier.de>
Co-authored-by: François Ménabé <francois.menabe@unistra.fr>
Co-authored-by: MrKeksi <mrkeksi@users.noreply.github.com>
Co-authored-by: yanosz <yanosz@users.noreply.github.com>
Co-authored-by: Moritz Schlarb <moschlar@metalabs.de>
Co-authored-by: chronikum <34622984+chronikum@users.noreply.github.com>
Co-authored-by: Mitsutaka Sato <miztaka@honestyworks.jp>
Co-authored-by: hiroshisuga <45039819+hiroshisuga@users.noreply.github.com>
This commit is contained in:
@ -47,6 +47,7 @@ class AdminsController < ApplicationController
|
||||
|
||||
# GET /admins/site_settings
|
||||
def site_settings
|
||||
@tab = params[:tab] || "appearance"
|
||||
end
|
||||
|
||||
# GET /admins/server_recordings
|
||||
@ -191,6 +192,7 @@ class AdminsController < ApplicationController
|
||||
|
||||
# POST /admins/update_settings
|
||||
def update_settings
|
||||
tab = params[:tab] || "settings"
|
||||
@settings.update_value(params[:setting], params[:value])
|
||||
|
||||
flash_message = I18n.t("administrator.flash.settings")
|
||||
@ -199,7 +201,7 @@ class AdminsController < ApplicationController
|
||||
flash_message += ". " + I18n.t("administrator.site_settings.recording_visibility.warning")
|
||||
end
|
||||
|
||||
redirect_to admin_site_settings_path, flash: { success: flash_message }
|
||||
redirect_to admin_site_settings_path(tab: tab), flash: { success: flash_message }
|
||||
end
|
||||
|
||||
# POST /admins/color
|
||||
@ -207,7 +209,7 @@ class AdminsController < ApplicationController
|
||||
@settings.update_value("Primary Color", params[:value])
|
||||
@settings.update_value("Primary Color Lighten", color_lighten(params[:value]))
|
||||
@settings.update_value("Primary Color Darken", color_darken(params[:value]))
|
||||
redirect_to admin_site_settings_path, flash: { success: I18n.t("administrator.flash.settings") }
|
||||
redirect_to admin_site_settings_path(tab: "appearance"), flash: { success: I18n.t("administrator.flash.settings") }
|
||||
end
|
||||
|
||||
# POST /admins/registration_method/:method
|
||||
@ -216,11 +218,11 @@ class AdminsController < ApplicationController
|
||||
|
||||
# Only allow change to Join by Invitation if user has emails enabled
|
||||
if !Rails.configuration.enable_email_verification && new_method == Rails.configuration.registration_methods[:invite]
|
||||
redirect_to admin_site_settings_path,
|
||||
redirect_to admin_site_settings_path(tab: "settings"),
|
||||
flash: { alert: I18n.t("administrator.flash.invite_email_verification") }
|
||||
else
|
||||
@settings.update_value("Registration Method", new_method)
|
||||
redirect_to admin_site_settings_path,
|
||||
redirect_to admin_site_settings_path(tab: "settings"),
|
||||
flash: { success: I18n.t("administrator.flash.registration_method_updated") }
|
||||
end
|
||||
end
|
||||
@ -229,7 +231,7 @@ class AdminsController < ApplicationController
|
||||
def clear_auth
|
||||
User.include_deleted.where(provider: @user_domain).update_all(social_uid: nil)
|
||||
|
||||
redirect_to admin_site_settings_path, flash: { success: I18n.t("administrator.flash.settings") }
|
||||
redirect_to admin_site_settings_path(tab: "settings"), flash: { success: I18n.t("administrator.flash.settings") }
|
||||
end
|
||||
|
||||
# POST /admins/clear_cache
|
||||
@ -237,14 +239,14 @@ class AdminsController < ApplicationController
|
||||
Rails.cache.delete("#{@user_domain}/getUser")
|
||||
Rails.cache.delete("#{@user_domain}/getUserGreenlightCredentials")
|
||||
|
||||
redirect_to admin_site_settings_path, flash: { success: I18n.t("administrator.flash.settings") }
|
||||
redirect_to admin_site_settings_path(tab: "settings"), flash: { success: I18n.t("administrator.flash.settings") }
|
||||
end
|
||||
|
||||
# POST /admins/log_level
|
||||
def log_level
|
||||
Rails.logger.level = params[:value].to_i
|
||||
|
||||
redirect_to admin_site_settings_path, flash: { success: I18n.t("administrator.flash.settings") }
|
||||
redirect_to admin_site_settings_path(tab: "administration"), flash: { success: I18n.t("administrator.flash.settings") }
|
||||
end
|
||||
|
||||
# ROOM CONFIGURATION
|
||||
|
@ -84,9 +84,9 @@ class ApplicationController < ActionController::Base
|
||||
help: I18n.t("errors.maintenance.help"),
|
||||
}
|
||||
end
|
||||
if Rails.configuration.maintenance_window.present?
|
||||
unless cookies[:maintenance_window] == Rails.configuration.maintenance_window
|
||||
flash.now[:maintenance] = Rails.configuration.maintenance_window
|
||||
if @settings.get_value("Maintenance Banner").present?
|
||||
unless cookies[:maintenance_window] == @settings.get_value("Maintenance Banner")
|
||||
flash.now[:maintenance] = @settings.get_value("Maintenance Banner")
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -182,6 +182,18 @@ class ApplicationController < ActionController::Base
|
||||
end
|
||||
helper_method :shared_access_allowed
|
||||
|
||||
# Indicates whether users are allowed to share rooms
|
||||
def recording_consent_required?
|
||||
@settings.get_value("Require Recording Consent") == "true"
|
||||
end
|
||||
helper_method :recording_consent_required?
|
||||
|
||||
# Returns a list of allowed file types
|
||||
def allowed_file_types
|
||||
Rails.configuration.allowed_file_types
|
||||
end
|
||||
helper_method :allowed_file_types
|
||||
|
||||
# Returns the page that the logo redirects to when clicked on
|
||||
def home_page
|
||||
return admins_path if current_user.has_role? :super_admin
|
||||
|
@ -61,7 +61,7 @@ module BbbServer
|
||||
# Creates a meeting on the BigBlueButton server.
|
||||
def start_session(room, options = {})
|
||||
create_options = {
|
||||
record: options[:meeting_recorded].to_s,
|
||||
record: options[:record].to_s,
|
||||
logoutURL: options[:meeting_logout_url] || '',
|
||||
moderatorPW: room.moderator_pw,
|
||||
attendeePW: room.attendee_pw,
|
||||
@ -77,11 +77,17 @@ module BbbServer
|
||||
|
||||
# Send the create request.
|
||||
begin
|
||||
meeting = bbb_server.create_meeting(room.name, room.bbb_id, create_options)
|
||||
# Update session info.
|
||||
meeting = if room.presentation.attached?
|
||||
modules = BigBlueButton::BigBlueButtonModules.new
|
||||
logger.info("Support: Room #{room.uid} starting using presentation: #{rails_blob_url(room.presentation)}")
|
||||
modules.add_presentation(:url, rails_blob_url(room.presentation))
|
||||
bbb_server.create_meeting(room.name, room.bbb_id, create_options, modules)
|
||||
else
|
||||
bbb_server.create_meeting(room.name, room.bbb_id, create_options)
|
||||
end
|
||||
|
||||
unless meeting[:messageKey] == 'duplicateWarning'
|
||||
room.update_attributes(sessions: room.sessions + 1,
|
||||
last_session: DateTime.now)
|
||||
room.update_attributes(sessions: room.sessions + 1, last_session: DateTime.now)
|
||||
end
|
||||
rescue BigBlueButton::BigBlueButtonException => e
|
||||
puts "BigBlueButton failed on create: #{e.key}: #{e.message}"
|
||||
|
@ -105,6 +105,8 @@ module Joiner
|
||||
"Room Configuration All Join Moderator"
|
||||
when "anyoneCanStart"
|
||||
"Room Configuration Allow Any Start"
|
||||
when "recording"
|
||||
"Room Configuration Recording"
|
||||
end
|
||||
|
||||
case @settings.get_value(config)
|
||||
|
@ -27,7 +27,7 @@ class RoomsController < ApplicationController
|
||||
unless: -> { !Rails.configuration.enable_email_verification }
|
||||
before_action :find_room, except: [:create, :join_specific_room, :cant_create_rooms]
|
||||
before_action :verify_room_ownership_or_admin_or_shared, only: [:start, :shared_access]
|
||||
before_action :verify_room_ownership_or_admin, only: [:update_settings, :destroy]
|
||||
before_action :verify_room_ownership_or_admin, only: [:update_settings, :destroy, :preupload_presentation, :remove_presentation]
|
||||
before_action :verify_room_ownership_or_shared, only: [:remove_shared_access]
|
||||
before_action :verify_room_owner_verified, only: [:show, :join],
|
||||
unless: -> { !Rails.configuration.enable_email_verification }
|
||||
@ -171,6 +171,7 @@ class RoomsController < ApplicationController
|
||||
@room_settings = JSON.parse(@room[:room_settings])
|
||||
opts[:mute_on_start] = room_setting_with_config("muteOnStart")
|
||||
opts[:require_moderator_approval] = room_setting_with_config("requireModeratorApproval")
|
||||
opts[:record] = record_meeting
|
||||
|
||||
begin
|
||||
redirect_to join_path(@room, current_user.name, opts, current_user.uid)
|
||||
@ -209,6 +210,45 @@ class RoomsController < ApplicationController
|
||||
redirect_back fallback_location: room_path(@room)
|
||||
end
|
||||
|
||||
# GET /:room_uid/current_presentation
|
||||
def current_presentation
|
||||
attached = @room.presentation.attached?
|
||||
|
||||
# Respond with JSON object of presentation name
|
||||
respond_to do |format|
|
||||
format.json { render body: { attached: attached, name: attached ? @room.presentation.filename.to_s : "" }.to_json }
|
||||
end
|
||||
end
|
||||
|
||||
# POST /:room_uid/preupload_presenstation
|
||||
def preupload_presentation
|
||||
begin
|
||||
raise "Invalid file type" unless valid_file_type
|
||||
@room.presentation.attach(room_params[:presentation])
|
||||
|
||||
flash[:success] = I18n.t("room.preupload_success")
|
||||
rescue => e
|
||||
logger.error "Support: Error in updating room presentation: #{e}"
|
||||
flash[:alert] = I18n.t("room.preupload_error")
|
||||
end
|
||||
|
||||
redirect_back fallback_location: room_path(@room)
|
||||
end
|
||||
|
||||
# POST /:room_uid/remove_presenstation
|
||||
def remove_presentation
|
||||
begin
|
||||
@room.presentation.purge
|
||||
|
||||
flash[:success] = I18n.t("room.preupload_remove_success")
|
||||
rescue => e
|
||||
logger.error "Support: Error in removing room presentation: #{e}"
|
||||
flash[:alert] = I18n.t("room.preupload_remove_error")
|
||||
end
|
||||
|
||||
redirect_back fallback_location: room_path(@room)
|
||||
end
|
||||
|
||||
# POST /:room_uid/update_shared_access
|
||||
def shared_access
|
||||
begin
|
||||
@ -240,7 +280,7 @@ class RoomsController < ApplicationController
|
||||
# POST /:room_uid/remove_shared_access
|
||||
def remove_shared_access
|
||||
begin
|
||||
SharedAccess.find_by!(room_id: @room.id, user_id: params[:user_id]).destroy
|
||||
SharedAccess.find_by!(room_id: @room.id, user_id: current_user).destroy
|
||||
flash[:success] = I18n.t("room.remove_shared_access_success")
|
||||
rescue => e
|
||||
logger.error "Support: Error in removing room shared access: #{e}"
|
||||
@ -262,7 +302,7 @@ class RoomsController < ApplicationController
|
||||
def room_settings
|
||||
# Respond with JSON object of the room_settings
|
||||
respond_to do |format|
|
||||
format.json { render body: @room.room_settings.to_json }
|
||||
format.json { render body: @room.room_settings }
|
||||
end
|
||||
end
|
||||
|
||||
@ -291,6 +331,7 @@ class RoomsController < ApplicationController
|
||||
"requireModeratorApproval": options[:require_moderator_approval] == "1",
|
||||
"anyoneCanStart": options[:anyone_can_start] == "1",
|
||||
"joinModerator": options[:all_join_moderator] == "1",
|
||||
"recording": options[:recording] == "1",
|
||||
}
|
||||
|
||||
room_settings.to_json
|
||||
@ -298,7 +339,8 @@ class RoomsController < ApplicationController
|
||||
|
||||
def room_params
|
||||
params.require(:room).permit(:name, :auto_join, :mute_on_join, :access_code,
|
||||
:require_moderator_approval, :anyone_can_start, :all_join_moderator)
|
||||
:require_moderator_approval, :anyone_can_start, :all_join_moderator,
|
||||
:recording, :presentation)
|
||||
end
|
||||
|
||||
# Find the room from the uid.
|
||||
@ -364,4 +406,18 @@ class RoomsController < ApplicationController
|
||||
current_user.rooms.length >= limit
|
||||
end
|
||||
helper_method :room_limit_exceeded
|
||||
|
||||
def record_meeting
|
||||
# If the require consent setting is checked, then check the room setting, else, set to true
|
||||
if recording_consent_required?
|
||||
room_setting_with_config("recording")
|
||||
else
|
||||
true
|
||||
end
|
||||
end
|
||||
|
||||
# Checks if the file extension is allowed
|
||||
def valid_file_type
|
||||
Rails.configuration.allowed_file_types.split(",").include?(File.extname(room_params[:presentation].original_filename))
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user