28
28
use Exception ;
29
29
use moodle_exception ;
30
30
use auth_oidc \event \action_failed ;
31
+ use moodle_url ;
31
32
32
33
/**
33
34
* General purpose utility class.
@@ -52,6 +53,18 @@ public static function process_json_response($response, array $expectedstructure
52
53
$ errmsg = 'Error response received. ' ;
53
54
self ::debug ($ errmsg , __METHOD__ , $ result );
54
55
if (isset ($ result ['error_description ' ])) {
56
+ $ isadminconsent = optional_param ('admin_consent ' , false , PARAM_BOOL );
57
+ if ($ isadminconsent ) {
58
+ if (get_config ('auth_oidc ' , 'idptype ' ) == AUTH_OIDC_IDP_TYPE_MICROSOFT_IDENTITY_PLATFORM &&
59
+ auth_oidc_is_local_365_installed () &&
60
+ $ result ['error ' ] === 'invalid_grant ' &&
61
+ isset ($ result ['error_codes ' ]) && count ($ result ['error_codes ' ]) == 1 &&
62
+ $ result ['error_codes ' ][0 ] == 53003 ) {
63
+ $ localo365configurationpageurl = new moodle_url ('/admin/settings.php ' , ['section ' => 'local_o365 ' ]);
64
+ throw new moodle_exception ('settings_adminconsent_error_53003 ' , 'local_o365 ' ,
65
+ $ localo365configurationpageurl , '' , $ result ['error_description ' ]);
66
+ }
67
+ }
55
68
throw new moodle_exception ('erroroidccall_message ' , 'auth_oidc ' , '' , $ result ['error_description ' ]);
56
69
} else {
57
70
throw new moodle_exception ('erroroidccall ' , 'auth_oidc ' );
@@ -164,7 +177,7 @@ private static function make_json_safe($data) {
164
177
* @return string The redirect URL.
165
178
*/
166
179
public static function get_redirecturl () {
167
- $ redirecturl = new \ moodle_url ('/auth/oidc/ ' );
180
+ $ redirecturl = new moodle_url ('/auth/oidc/ ' );
168
181
return $ redirecturl ->out (false );
169
182
}
170
183
@@ -174,7 +187,7 @@ public static function get_redirecturl() {
174
187
* @return string The redirect URL.
175
188
*/
176
189
public static function get_frontchannellogouturl () {
177
- $ logouturl = new \ moodle_url ('/auth/oidc/logout.php ' );
190
+ $ logouturl = new moodle_url ('/auth/oidc/logout.php ' );
178
191
return $ logouturl ->out (false );
179
192
}
180
193
0 commit comments