mirror of
https://github.com/PawelSuwinski/moodle-auth_emailotp.git
synced 2026-05-17 05:48:40 +02:00
otp_generated and otp_revoked events
This commit is contained in:
17
auth.php
17
auth.php
@@ -93,10 +93,14 @@ class auth_plugin_emailotp extends auth_plugin_base {
|
|||||||
'auth' => $this->authtype,
|
'auth' => $this->authtype,
|
||||||
'deleted' => 0,
|
'deleted' => 0,
|
||||||
]))) {
|
]))) {
|
||||||
$this->redirect($username, $this->gen_otp($username)
|
if ($this->gen_otp($username)) {
|
||||||
? notification::NOTIFY_SUCCESS
|
\auth_emailotp\event\otp_generated::create(array(
|
||||||
: notification::NOTIFY_ERROR
|
'other' => array('email' => $username),
|
||||||
);
|
))->trigger();
|
||||||
|
$this->redirect($username, notification::NOTIFY_SUCCESS);
|
||||||
|
} else {
|
||||||
|
$this->redirect($username, notification::NOTIFY_ERROR);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// OTP exits but validation failed - reset if revoke threshold is set.
|
// OTP exits but validation failed - reset if revoke threshold is set.
|
||||||
if (isset($_SESSION[self::COMPONENT_NAME])) {
|
if (isset($_SESSION[self::COMPONENT_NAME])) {
|
||||||
@@ -105,9 +109,12 @@ class auth_plugin_emailotp extends auth_plugin_base {
|
|||||||
$_SESSION[self::COMPONENT_NAME]['login_failed_count'] >= $this->config->revokethreshold) {
|
$_SESSION[self::COMPONENT_NAME]['login_failed_count'] >= $this->config->revokethreshold) {
|
||||||
unset($_SESSION[self::COMPONENT_NAME]);
|
unset($_SESSION[self::COMPONENT_NAME]);
|
||||||
\core\notification::add(
|
\core\notification::add(
|
||||||
(string)new lang_string('otpinvalidated', self::COMPONENT_NAME, null, $CFG->lang),
|
(string)new lang_string('otprevoked', self::COMPONENT_NAME, null, $CFG->lang),
|
||||||
notification::NOTIFY_WARNING
|
notification::NOTIFY_WARNING
|
||||||
);
|
);
|
||||||
|
\auth_emailotp\event\otp_revoked::create(array(
|
||||||
|
'other' => array('email' => $username),
|
||||||
|
))->trigger();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
88
classes/event/otp_generated.php
Normal file
88
classes/event/otp_generated.php
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
<?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/>.
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Event when one-time password is generated.
|
||||||
|
*
|
||||||
|
* @package auth_emailotp
|
||||||
|
* @copyright 2020 Pawel Suwinski <psuw@wp.pl>
|
||||||
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace auth_emailotp\event;
|
||||||
|
|
||||||
|
defined('MOODLE_INTERNAL') || die();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Event when one-time password is generated.
|
||||||
|
*
|
||||||
|
* @package auth_emailotp
|
||||||
|
* @copyright 2020 Pawel Suwinski <psuw@wp.pl>
|
||||||
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||||
|
*/
|
||||||
|
class otp_generated extends \core\event\base {
|
||||||
|
|
||||||
|
protected static $crud = 'c';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
protected function init() {
|
||||||
|
$this->data['crud'] = static::$crud;
|
||||||
|
$this->data['edulevel'] = self::LEVEL_OTHER;
|
||||||
|
$this->context = \context_system::instance();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public static function get_name() {
|
||||||
|
return get_string('eventotp'.substr(static::class, strrpos(static::class, '_') + 1),
|
||||||
|
'auth_emailotp');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function get_description() {
|
||||||
|
return sprintf('Password %s for \'%s\'', $this->action,
|
||||||
|
$this->other['email']);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
protected function get_legacy_logdata() {
|
||||||
|
return array(SITEID, 'auth_emailotp', $this->action, '',
|
||||||
|
$this->other['email']);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Custom validation.
|
||||||
|
*
|
||||||
|
* @throws \coding_exception
|
||||||
|
*/
|
||||||
|
protected function validate_data() {
|
||||||
|
parent::validate_data();
|
||||||
|
if (!isset($this->other['email'])) {
|
||||||
|
throw new \coding_exception('The \'email\' value must be set in other.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function get_other_mapping() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
38
classes/event/otp_revoked.php
Normal file
38
classes/event/otp_revoked.php
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
<?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/>.
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Event when one-time password is revoked.
|
||||||
|
*
|
||||||
|
* @package auth_emailotp
|
||||||
|
* @copyright 2020 Pawel Suwinski <psuw@wp.pl>
|
||||||
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace auth_emailotp\event;
|
||||||
|
|
||||||
|
defined('MOODLE_INTERNAL') || die();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Event when one-time password is revoked.
|
||||||
|
*
|
||||||
|
* @package auth_emailotp
|
||||||
|
* @copyright 2020 Pawel Suwinski <psuw@wp.pl>
|
||||||
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||||
|
*/
|
||||||
|
class otp_revoked extends otp_generated {
|
||||||
|
protected static $crud = 'd';
|
||||||
|
}
|
||||||
@@ -23,20 +23,22 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
$string['pluginname'] = 'Email OTP';
|
$string['pluginname'] = 'Email OTP';
|
||||||
|
$string['eventotpgenerated'] = 'Password generated';
|
||||||
|
$string['eventotprevoked'] = 'Password revoked';
|
||||||
$string['otpgeneratedsubj'] = 'One-time password';
|
$string['otpgeneratedsubj'] = 'One-time password';
|
||||||
$string['otpgeneratedtext'] = 'One-time password for current session: {$a->password}';
|
$string['otpgeneratedtext'] = 'One-time password for current session: {$a->password}';
|
||||||
$string['otpsentsuccess'] = 'One-time password was sent to given email.';
|
$string['otpsentsuccess'] = 'One-time password was sent to given email.';
|
||||||
$string['otpsenterror'] = 'An error occurred while sending one-time password.';
|
$string['otpsenterror'] = 'An error occurred while sending one-time password.';
|
||||||
$string['otpsentinfo'] = 'One-time password for current session was already generated and sent to email.';
|
$string['otpsentinfo'] = 'One-time password for current session was already generated and sent to email.';
|
||||||
$string['otpinvalidated'] = 'Previously generated password has been revoked due to exceeding the login failure threshold.';
|
$string['otprevoked'] = 'Previously generated password has been revoked due to exceeding the login failure threshold.';
|
||||||
$string['optperioderror'] = 'Minim period after which another password can be generated not preserved. Try again later.';
|
$string['otpperioderror'] = 'Minim period after which another password can be generated not preserved. Try again later.';
|
||||||
$string['revokethreshold'] = 'Revoke threshold';
|
$string['revokethreshold'] = 'Revoke threshold';
|
||||||
$string['revokethreshold_help'] = 'Login failures limit causing revoke of the generated password (0 - unlimited).';
|
$string['revokethreshold_help'] = 'Login failures limit causing revoke of the generated password (0 - unlimited).';
|
||||||
$string['minrequestperiod'] = 'Minium period';
|
$string['minrequestperiod'] = 'Minium period';
|
||||||
$string['minrequestperiod_help'] = 'A time in seconds after which another password can be generated.';
|
$string['minrequestperiod_help'] = 'A time in seconds after which another password can be generated.';
|
||||||
$string['fieldsmapping'] = 'User profile fields mapping';
|
$string['fieldsmapping'] = 'User profile fields mapping';
|
||||||
$string['fieldsmapping_pattern'] = 'Pattern';
|
$string['fieldsmapping_pattern'] = 'Pattern';
|
||||||
$string['fieldsmapping_pattern_help'] = 'Capturing groups PCRE patttern.';
|
$string['fieldsmapping_pattern_help'] = 'Capturing groups PCRE pattern.';
|
||||||
$string['fieldsmapping_mapping'] = 'Mapping';
|
$string['fieldsmapping_mapping'] = 'Mapping';
|
||||||
$string['fieldsmapping_mapping_help'] = 'Mapping expressions.';
|
$string['fieldsmapping_mapping_help'] = 'Mapping expressions.';
|
||||||
$string['fieldsmapping_help'] = <<<'EOT'
|
$string['fieldsmapping_help'] = <<<'EOT'
|
||||||
|
|||||||
@@ -23,13 +23,15 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
$string['pluginname'] = 'Email OTP';
|
$string['pluginname'] = 'Email OTP';
|
||||||
|
$string['eventotpgenerated'] = 'Hasło wynegerowano';
|
||||||
|
$string['eventotprevoked'] = 'Hasło unieważniono';
|
||||||
$string['otpgeneratedsubj'] = 'Hasło jednorazowe';
|
$string['otpgeneratedsubj'] = 'Hasło jednorazowe';
|
||||||
$string['otpgeneratedtext'] = 'Hasło jednorazowe dla bieżącej sesji: {$a->password}';
|
$string['otpgeneratedtext'] = 'Hasło jednorazowe dla bieżącej sesji: {$a->password}';
|
||||||
$string['otpsentsuccess'] = 'Hasło jednorazowe zostało wysłane na podany adres email.';
|
$string['otpsentsuccess'] = 'Hasło jednorazowe zostało wysłane na podany adres email.';
|
||||||
$string['otpsenterror'] = 'Wystąpił błąd podczas wysyłania hasła jednorazowego.';
|
$string['otpsenterror'] = 'Wystąpił błąd podczas wysyłania hasła jednorazowego.';
|
||||||
$string['otpsentinfo'] = 'Hasło jednorazowe dla bieżącej sesji już zostało wygenerowane i wysłane.';
|
$string['otpsentinfo'] = 'Hasło jednorazowe dla bieżącej sesji już zostało wygenerowane i wysłane.';
|
||||||
$string['otpinvalidated'] = 'Poprzednio wygenerowane hasło zostało unieważnione z powodu przekroczenia limitu niepoprawnych logowań.';
|
$string['otpinvalidated'] = 'Poprzednio wygenerowane hasło zostało unieważnione z powodu przekroczenia limitu niepoprawnych logowań.';
|
||||||
$string['optperioderror'] = 'Nie zachowany minimalny odstęp, po którym kolejne hasło może być wygenerowane. Spróbuj ponownie później.';
|
$string['otpperioderror'] = 'Nie zachowany minimalny odstęp, po którym kolejne hasło może być wygenerowane. Spróbuj ponownie później.';
|
||||||
$string['revokethreshold'] = 'Próg nieważnienia';
|
$string['revokethreshold'] = 'Próg nieważnienia';
|
||||||
$string['revokethreshold_help'] = 'Limit nieudanych logowań unieważniających wygenerowane hasło (0 - bez limitu).';
|
$string['revokethreshold_help'] = 'Limit nieudanych logowań unieważniających wygenerowane hasło (0 - bez limitu).';
|
||||||
$string['minrequestperiod'] = 'Minimalny odstęp';
|
$string['minrequestperiod'] = 'Minimalny odstęp';
|
||||||
|
|||||||
Reference in New Issue
Block a user