mirror of
https://github.com/moodle/moodle.git
synced 2025-02-22 19:06:51 +01:00
* Provide a way for external participants to be invited to a meeting by giving them an url/password for external users (not registered in Moodle) * Add guest access page with username and password prompt * Add form and modify API calls to take into account guest login * Add a form modal to add guest users emails * Allow copy of link and password in both popup form and module form * The guest should be approved by default. It should be intentional to let them in without checks. * Guest access URL and password should not be copied when duplicating or backing up the activity. * The mod_bigbluebuttonbn_meeting_info web service function now returns guestjoinurl and guestpassword only for moderators. * Redirect if user already logged in Note: this will allow guest to connect to an existing and running meeting. The moderator will then be able to adjust the guest user's right. For security reasons we do not yet allow moderators to join the meeting directly (or start a meeting)
80 lines
2.3 KiB
PHP
80 lines
2.3 KiB
PHP
<?php
|
|
// This file is part of Moodle - http://moodle.org/
|
|
//
|
|
// Moodle is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// Moodle is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
namespace mod_bigbluebuttonbn;
|
|
|
|
/**
|
|
* Class plugin.
|
|
*
|
|
* @package mod_bigbluebuttonbn
|
|
* @copyright 2019 onwards, Blindside Networks Inc
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
|
* @author Darko Miletic (darko.miletic [at] gmail [dt] com)
|
|
*/
|
|
abstract class plugin {
|
|
|
|
/**
|
|
* Component name.
|
|
*/
|
|
const COMPONENT = 'mod_bigbluebuttonbn';
|
|
|
|
/**
|
|
* Helper function to convert an html string to plain text.
|
|
*
|
|
* @param string $html
|
|
* @param int $len
|
|
*
|
|
* @return string
|
|
*/
|
|
public static function html2text($html, $len = 0) {
|
|
$text = strip_tags($html);
|
|
$text = str_replace(' ', ' ', $text);
|
|
$textlen = strlen($text);
|
|
$text = mb_substr($text, 0, $len);
|
|
if ($textlen > $len) {
|
|
$text .= '...';
|
|
}
|
|
return $text;
|
|
}
|
|
|
|
/**
|
|
* Helper generates a random password.
|
|
*
|
|
* @param int $length
|
|
* @param string $unique
|
|
*
|
|
* @return string
|
|
*/
|
|
public static function random_password($length = 8, $unique = "") {
|
|
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
|
do {
|
|
$password = substr(str_shuffle($chars), 0, $length);
|
|
} while ($unique == $password);
|
|
return $password;
|
|
}
|
|
|
|
/**
|
|
* Generate random credentials for guest access
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function generate_guest_meeting_credentials(): array {
|
|
$password = self::random_password();
|
|
$guestlinkuid = sha1(self::random_password(1024));
|
|
return [$guestlinkuid, $password];
|
|
}
|
|
}
|