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 ' );
@@ -173,7 +186,7 @@ private static function make_json_safe($data) {
173
186
* @return string The redirect URL.
174
187
*/
175
188
public static function get_redirecturl () {
176
- $ redirecturl = new \ moodle_url ('/auth/oidc/ ' );
189
+ $ redirecturl = new moodle_url ('/auth/oidc/ ' );
177
190
return $ redirecturl ->out (false );
178
191
}
179
192
@@ -183,7 +196,7 @@ public static function get_redirecturl() {
183
196
* @return string The redirect URL.
184
197
*/
185
198
public static function get_frontchannellogouturl () {
186
- $ logouturl = new \ moodle_url ('/auth/oidc/logout.php ' );
199
+ $ logouturl = new moodle_url ('/auth/oidc/logout.php ' );
187
200
return $ logouturl ->out (false );
188
201
}
189
202
0 commit comments