Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
// This file is part of Moodle - http://moodle.org/
3
//
4
// Moodle is free software: you can redistribute it and/or modify
5
// it under the terms of the GNU General Public License as published by
6
// the Free Software Foundation, either version 3 of the License, or
7
// (at your option) any later version.
8
//
9
// Moodle is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
// GNU General Public License for more details.
13
//
14
// You should have received a copy of the GNU General Public License
15
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
16
 
17
/**
18
 * Admin settings and defaults.
19
 *
20
 * @package auth_cas
21
 * @copyright  2017 Stephen Bourget
22
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23
 */
24
 
25
defined('MOODLE_INTERNAL') || die;
26
 
27
if ($ADMIN->fulltree) {
28
 
29
    if (!function_exists('ldap_connect')) {
30
        $notify = new \core\output\notification(get_string('auth_casnotinstalled', 'auth_cas'),
31
            \core\output\notification::NOTIFY_WARNING);
32
        $settings->add(new admin_setting_heading('auth_casnotinstalled', '', $OUTPUT->render($notify)));
33
    } else {
34
        // We use a couple of custom admin settings since we need to massage the data before it is inserted into the DB.
35
        require_once($CFG->dirroot.'/auth/ldap/classes/admin_setting_special_lowercase_configtext.php');
36
        require_once($CFG->dirroot.'/auth/ldap/classes/admin_setting_special_contexts_configtext.php');
37
 
38
        // Include needed files.
39
        require_once($CFG->dirroot.'/auth/cas/auth.php');
40
        require_once($CFG->dirroot.'/auth/cas/languages.php');
41
 
42
        // Introductory explanation.
43
        $settings->add(new admin_setting_heading('auth_cas/pluginname', '',
44
                new lang_string('auth_casdescription', 'auth_cas')));
45
 
46
        // CAS server configuration label.
47
        $settings->add(new admin_setting_heading('auth_cas/casserversettings',
48
                new lang_string('auth_cas_server_settings', 'auth_cas'), ''));
49
 
50
        // Authentication method name.
51
        $settings->add(new admin_setting_configtext('auth_cas/auth_name',
52
                get_string('auth_cas_auth_name', 'auth_cas'),
53
                get_string('auth_cas_auth_name_description', 'auth_cas'),
54
                get_string('auth_cas_auth_service', 'auth_cas'),
55
                PARAM_RAW_TRIMMED));
56
 
57
        // Authentication method logo.
58
        $opts = array('accepted_types' => array('.png', '.jpg', '.gif', '.webp', '.tiff', '.svg'));
59
        $settings->add(new admin_setting_configstoredfile('auth_cas/auth_logo',
60
                 get_string('auth_cas_auth_logo', 'auth_cas'),
61
                 get_string('auth_cas_auth_logo_description', 'auth_cas'), 'logo', 0, $opts));
62
 
63
 
64
        // Hostname.
65
        $settings->add(new admin_setting_configtext('auth_cas/hostname',
66
                get_string('auth_cas_hostname_key', 'auth_cas'),
67
                get_string('auth_cas_hostname', 'auth_cas'), '', PARAM_RAW_TRIMMED));
68
 
69
        // Base URI.
70
        $settings->add(new admin_setting_configtext('auth_cas/baseuri',
71
                get_string('auth_cas_baseuri_key', 'auth_cas'),
72
                get_string('auth_cas_baseuri', 'auth_cas'), '', PARAM_RAW_TRIMMED));
73
 
74
        // Port.
75
        $settings->add(new admin_setting_configtext('auth_cas/port',
76
                get_string('auth_cas_port_key', 'auth_cas'),
77
                get_string('auth_cas_port', 'auth_cas'), '', PARAM_INT));
78
 
79
        // CAS Version.
80
        $casversions = array();
81
        $casversions[CAS_VERSION_1_0] = 'CAS 1.0';
82
        $casversions[CAS_VERSION_2_0] = 'CAS 2.0';
83
        $settings->add(new admin_setting_configselect('auth_cas/casversion',
84
                new lang_string('auth_cas_casversion', 'auth_cas'),
85
                new lang_string('auth_cas_version', 'auth_cas'), CAS_VERSION_2_0, $casversions));
86
 
87
        // Language.
88
        if (!isset($CASLANGUAGES) || empty($CASLANGUAGES)) {
89
            // Prevent warnings on other admin pages.
90
            // $CASLANGUAGES is defined in /auth/cas/languages.php.
91
            $CASLANGUAGES = array();
92
            $CASLANGUAGES[PHPCAS_LANG_ENGLISH] = 'English';
93
            $CASLANGUAGES[PHPCAS_LANG_FRENCH] = 'French';
94
        }
95
        $settings->add(new admin_setting_configselect('auth_cas/language',
96
                new lang_string('auth_cas_language_key', 'auth_cas'),
97
                new lang_string('auth_cas_language', 'auth_cas'), PHPCAS_LANG_ENGLISH, $CASLANGUAGES));
98
 
99
        // Proxy.
100
        $yesno = array(
101
            new lang_string('no'),
102
            new lang_string('yes'),
103
        );
104
        $settings->add(new admin_setting_configselect('auth_cas/proxycas',
105
                new lang_string('auth_cas_proxycas_key', 'auth_cas'),
106
                new lang_string('auth_cas_proxycas', 'auth_cas'), 0 , $yesno));
107
 
108
        // Logout option.
109
        $settings->add(new admin_setting_configselect('auth_cas/logoutcas',
110
                new lang_string('auth_cas_logoutcas_key', 'auth_cas'),
111
                new lang_string('auth_cas_logoutcas', 'auth_cas'), 0 , $yesno));
112
 
113
        // Multi-auth.
114
        $settings->add(new admin_setting_configselect('auth_cas/multiauth',
115
                new lang_string('auth_cas_multiauth_key', 'auth_cas'),
116
                new lang_string('auth_cas_multiauth', 'auth_cas'), 0 , $yesno));
117
 
118
        // Server validation.
119
        $settings->add(new admin_setting_configselect('auth_cas/certificate_check',
120
                new lang_string('auth_cas_certificate_check_key', 'auth_cas'),
121
                new lang_string('auth_cas_certificate_check', 'auth_cas'), 0 , $yesno));
122
 
123
        // Certificate path.
124
        $settings->add(new admin_setting_configfile('auth_cas/certificate_path',
125
                get_string('auth_cas_certificate_path_key', 'auth_cas'),
126
                get_string('auth_cas_certificate_path', 'auth_cas'), ''));
127
 
128
        // CURL SSL version.
129
        $sslversions = array();
130
        $sslversions[''] = get_string('auth_cas_curl_ssl_version_default', 'auth_cas');
131
        if (defined('CURL_SSLVERSION_TLSv1')) {
132
            $sslversions[CURL_SSLVERSION_TLSv1] = get_string('auth_cas_curl_ssl_version_TLSv1x', 'auth_cas');
133
        }
134
        if (defined('CURL_SSLVERSION_TLSv1_0')) {
135
            $sslversions[CURL_SSLVERSION_TLSv1_0] = get_string('auth_cas_curl_ssl_version_TLSv10', 'auth_cas');
136
        }
137
        if (defined('CURL_SSLVERSION_TLSv1_1')) {
138
            $sslversions[CURL_SSLVERSION_TLSv1_1] = get_string('auth_cas_curl_ssl_version_TLSv11', 'auth_cas');
139
        }
140
        if (defined('CURL_SSLVERSION_TLSv1_2')) {
141
            $sslversions[CURL_SSLVERSION_TLSv1_2] = get_string('auth_cas_curl_ssl_version_TLSv12', 'auth_cas');
142
        }
143
        if (defined('CURL_SSLVERSION_SSLv2')) {
144
            $sslversions[CURL_SSLVERSION_SSLv2] = get_string('auth_cas_curl_ssl_version_SSLv2', 'auth_cas');
145
        }
146
        if (defined('CURL_SSLVERSION_SSLv3')) {
147
            $sslversions[CURL_SSLVERSION_SSLv3] = get_string('auth_cas_curl_ssl_version_SSLv3', 'auth_cas');
148
        }
149
        $settings->add(new admin_setting_configselect('auth_cas/curl_ssl_version',
150
                new lang_string('auth_cas_curl_ssl_version_key', 'auth_cas'),
151
                new lang_string('auth_cas_curl_ssl_version', 'auth_cas'), '' , $sslversions));
152
 
153
        // Alt Logout URL.
154
        $settings->add(new admin_setting_configtext('auth_cas/logout_return_url',
155
                get_string('auth_cas_logout_return_url_key', 'auth_cas'),
156
                get_string('auth_cas_logout_return_url', 'auth_cas'), '', PARAM_URL));
157
 
158
        // LDAP server settings.
159
        $settings->add(new admin_setting_heading('auth_cas/ldapserversettings',
160
                new lang_string('auth_ldap_server_settings', 'auth_ldap'), ''));
161
 
162
        // Host.
163
        $settings->add(new admin_setting_configtext('auth_cas/host_url',
164
                get_string('auth_ldap_host_url_key', 'auth_ldap'),
165
                get_string('auth_ldap_host_url', 'auth_ldap'), '', PARAM_RAW_TRIMMED));
166
 
167
        // Version.
168
        $versions = array();
169
        $versions[2] = '2';
170
        $versions[3] = '3';
171
        $settings->add(new admin_setting_configselect('auth_cas/ldap_version',
172
                new lang_string('auth_ldap_version_key', 'auth_ldap'),
173
                new lang_string('auth_ldap_version', 'auth_ldap'), 3, $versions));
174
 
175
        // Start TLS.
176
        $settings->add(new admin_setting_configselect('auth_cas/start_tls',
177
                new lang_string('start_tls_key', 'auth_ldap'),
178
                new lang_string('start_tls', 'auth_ldap'), 0 , $yesno));
179
 
180
 
181
        // Encoding.
182
        $settings->add(new admin_setting_configtext('auth_cas/ldapencoding',
183
                get_string('auth_ldap_ldap_encoding_key', 'auth_ldap'),
184
                get_string('auth_ldap_ldap_encoding', 'auth_ldap'), 'utf-8', PARAM_RAW_TRIMMED));
185
 
186
        // Page Size. (Hide if not available).
187
        $settings->add(new admin_setting_configtext('auth_cas/pagesize',
188
                get_string('pagesize_key', 'auth_ldap'),
189
                get_string('pagesize', 'auth_ldap'), '250', PARAM_INT));
190
 
191
        // Bind settings.
192
        $settings->add(new admin_setting_heading('auth_cas/ldapbindsettings',
193
                new lang_string('auth_ldap_bind_settings', 'auth_ldap'), ''));
194
 
195
        // User ID.
196
        $settings->add(new admin_setting_configtext('auth_cas/bind_dn',
197
                get_string('auth_ldap_bind_dn_key', 'auth_ldap'),
198
                get_string('auth_ldap_bind_dn', 'auth_ldap'), '', PARAM_RAW_TRIMMED));
199
 
200
        // Password.
201
        $settings->add(new admin_setting_configpasswordunmask('auth_cas/bind_pw',
202
                get_string('auth_ldap_bind_pw_key', 'auth_ldap'),
203
                get_string('auth_ldap_bind_pw', 'auth_ldap'), ''));
204
 
205
        // User Lookup settings.
206
        $settings->add(new admin_setting_heading('auth_cas/ldapuserlookup',
207
                new lang_string('auth_ldap_user_settings', 'auth_ldap'), ''));
208
 
209
        // User Type.
210
        $settings->add(new admin_setting_configselect('auth_cas/user_type',
211
                new lang_string('auth_ldap_user_type_key', 'auth_ldap'),
212
                new lang_string('auth_ldap_user_type', 'auth_ldap'), 'default', ldap_supported_usertypes()));
213
 
214
        // Contexts.
215
        $settings->add(new auth_ldap_admin_setting_special_contexts_configtext('auth_cas/contexts',
216
                get_string('auth_ldap_contexts_key', 'auth_ldap'),
217
                get_string('auth_ldap_contexts', 'auth_ldap'), '', PARAM_RAW_TRIMMED));
218
 
219
        // Search subcontexts.
220
        $settings->add(new admin_setting_configselect('auth_cas/search_sub',
221
                new lang_string('auth_ldap_search_sub_key', 'auth_ldap'),
222
                new lang_string('auth_ldap_search_sub', 'auth_ldap'), 0 , $yesno));
223
 
224
        // Dereference aliases.
225
        $optderef = array();
226
        $optderef[LDAP_DEREF_NEVER] = get_string('no');
227
        $optderef[LDAP_DEREF_ALWAYS] = get_string('yes');
228
 
229
        $settings->add(new admin_setting_configselect('auth_cas/opt_deref',
230
                new lang_string('auth_ldap_opt_deref_key', 'auth_ldap'),
231
                new lang_string('auth_ldap_opt_deref', 'auth_ldap'), LDAP_DEREF_NEVER , $optderef));
232
 
233
        // User attribute.
234
        $settings->add(new auth_ldap_admin_setting_special_lowercase_configtext('auth_cas/user_attribute',
235
                get_string('auth_ldap_user_attribute_key', 'auth_ldap'),
236
                get_string('auth_ldap_user_attribute', 'auth_ldap'), '', PARAM_RAW));
237
 
238
        // Member attribute.
239
        $settings->add(new auth_ldap_admin_setting_special_lowercase_configtext('auth_cas/memberattribute',
240
                get_string('auth_ldap_memberattribute_key', 'auth_ldap'),
241
                get_string('auth_ldap_memberattribute', 'auth_ldap'), '', PARAM_RAW));
242
 
243
        // Member attribute uses dn.
244
        $settings->add(new admin_setting_configselect('auth_cas/memberattribute_isdn',
245
                get_string('auth_ldap_memberattribute_isdn_key', 'auth_ldap'),
246
                get_string('auth_ldap_memberattribute_isdn', 'auth_ldap'), 0, $yesno));
247
 
248
        // Object class.
249
        $settings->add(new admin_setting_configtext('auth_cas/objectclass',
250
                get_string('auth_ldap_objectclass_key', 'auth_ldap'),
251
                get_string('auth_ldap_objectclass', 'auth_ldap'), '', PARAM_RAW_TRIMMED));
252
 
253
        // Course Creators Header.
254
        $settings->add(new admin_setting_heading('auth_cas/coursecreators',
255
                new lang_string('coursecreators'), ''));
256
 
257
        // Course creators attribute field mapping.
258
        $settings->add(new admin_setting_configtext('auth_cas/attrcreators',
259
                get_string('auth_ldap_attrcreators_key', 'auth_ldap'),
260
                get_string('auth_ldap_attrcreators', 'auth_ldap'), '', PARAM_RAW_TRIMMED));
261
 
262
        // Course creator group field mapping.
263
        $settings->add(new admin_setting_configtext('auth_cas/groupecreators',
264
                get_string('auth_ldap_groupecreators_key', 'auth_ldap'),
265
                get_string('auth_ldap_groupecreators', 'auth_ldap'), '', PARAM_RAW_TRIMMED));
266
 
267
        // User Account Sync.
268
        $settings->add(new admin_setting_heading('auth_cas/syncusers',
269
                new lang_string('auth_sync_script', 'auth'), ''));
270
 
271
        // Remove external user.
272
        $deleteopt = array();
273
        $deleteopt[AUTH_REMOVEUSER_KEEP] = get_string('auth_remove_keep', 'auth');
274
        $deleteopt[AUTH_REMOVEUSER_SUSPEND] = get_string('auth_remove_suspend', 'auth');
275
        $deleteopt[AUTH_REMOVEUSER_FULLDELETE] = get_string('auth_remove_delete', 'auth');
276
 
277
        $settings->add(new admin_setting_configselect('auth_cas/removeuser',
278
                new lang_string('auth_remove_user_key', 'auth'),
279
                new lang_string('auth_remove_user', 'auth'), AUTH_REMOVEUSER_KEEP, $deleteopt));
280
    }
281
 
282
    // Display locking / mapping of profile fields.
283
    $authplugin = get_auth_plugin('cas');
284
    $help  = get_string('auth_ldapextrafields', 'auth_ldap');
285
    $help .= get_string('auth_updatelocal_expl', 'auth');
286
    $help .= get_string('auth_fieldlock_expl', 'auth');
287
    $help .= get_string('auth_updateremote_expl', 'auth');
288
    $help .= '<hr />';
289
    $help .= get_string('auth_updateremote_ldap', 'auth');
290
    display_auth_lock_options($settings, $authplugin->authtype, $authplugin->userfields, $help, true, true,
291
            $authplugin->get_custom_user_profile_fields());
292
 
293
}