-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathauth.php
165 lines (147 loc) · 4.96 KB
/
auth.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
<?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/>.
/**
* Объявление класса плагина авторизации.
*
* @package auth_billing
* @copyright 2018 "Valentin Popov" <[email protected]>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
require_once($CFG->dirroot . '/auth/billing/lib.php');
require_once($CFG->libdir . '/authlib.php');
/**
* Основной класс плагина.
*
* @package auth_billing
* @copyright 2018 "Valentin Popov" <[email protected]>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class auth_plugin_billing extends auth_plugin_base {
/**
* Конструктор.
*/
public function __construct() {
$this->authtype = 'billing';
$this->config = get_config('auth_billing');
$this->errorlogtag = '[AUTH BILLING] ';
}
/**
* Старый синтаксис конструктора.
* Устарело в PHP7.
*
* @deprecated since Moodle 3.1
*/
public function auth_plugin_billing() {
debugging('Use of class name as constructor is deprecated', DEBUG_DEVELOPER);
self::__construct();
}
/**
* Истинно, если пользователь идентифицирован.
*
* @param string $username Логин пользователя
* @param string $password Пароль пользователя
* @return boolean Результат проверки
*/
public function user_login($username, $password) {
return auth_billing::check_user($username, $password);
}
/**
* Получение информации о пользователе из внешней системы.
*
* @param string $username Логин пользователя
* @return array Пользовательская информация
*/
public function get_userinfo($username) {
return auth_billing::create_profile($username);
}
/**
* Обновление пароля пользователя.
*
* @param object $user Пользователь
* @param string $newpassword Пароль
* @return boolean Результат
*/
public function user_update_password($user, $newpassword) {
return false;
}
/**
* Истинно, если плагин использует локальный пароль.
*
* @return boolean
*/
public function prevent_local_passwords() {
return false;
}
/**
* Истинно, если плагин не использует сторонние системы авторизации.
*
* @return boolean
*/
public function is_internal() {
return false;
}
/**
* Истинно, если плагин позволяет сменить пароль.
*
* @return boolean
*/
public function can_change_password() {
return true;
}
/**
* Получение адреса URL для смены пароля.
*
* @return moodle_url
*/
public function change_password_url() {
global $USER;
$url = $this->config->billing;
if ($userid = auth_billing::get_id_user($USER->email)) {
$url .= '/user/' . $userid;
}
return new moodle_url($url);
}
/**
* Истинно, если плагин разрешает сбрасывать пароль.
*
* @return boolean
*/
public function can_reset_password() {
return false;
}
/**
* Истинно, если плагин установлен вручную.
*
* @return boolean
*/
public function can_be_manually_set() {
return true;
}
/**
* Проверка настроек плагина.
*/
public function test_settings() {
global $OUTPUT;
if (auth_billing::check_service()) {
$text = new lang_string('success', 'moodle');
echo $OUTPUT->notification($text, 'notifysuccess');
} else {
$text = new lang_string('servererror', 'moodle');
echo $OUTPUT->notification($text, 'notifyproblem');
}
}
}