$userid = $USER->id;
}
+ if (linked_login::has_existing_issuer_match($issuer, $userinfo['username'])) {
+ throw new moodle_exception('alreadylinked', 'auth_oauth2');
+ }
+
if (\core\session\manager::is_loggedinas()) {
throw new moodle_exception('notwhileloggedinas', 'auth_oauth2');
}
$record->issuerid = $issuer->get('id');
$record->username = $userinfo['username'];
$record->userid = $userid;
- $existing = linked_login::get_record((array)$record);
- if ($existing) {
- return false;
+ if (linked_login::has_existing_issuer_match($issuer, $userinfo['username'])) {
+ throw new moodle_exception('alreadylinked', 'auth_oauth2');
}
$record->email = $userinfo['email'];
$record->confirmtoken = random_string(32);
require_once($CFG->dirroot.'/user/profile/lib.php');
require_once($CFG->dirroot.'/user/lib.php');
+ if (linked_login::has_existing_issuer_match($issuer, $userinfo['username'])) {
+ throw new moodle_exception('alreadylinked', 'auth_oauth2');
+ }
+
$user = new stdClass();
$user->username = $userinfo['username'];
$user->email = $userinfo['email'];
$login->delete();
}
+
+ /**
+ * Delete linked logins for a user.
+ *
+ * @param \core\event\user_deleted $event
+ * @return boolean
+ */
+ public static function user_deleted(\core\event\user_deleted $event) {
+ global $DB;
+
+ $userid = $event->objectid;
+
+ return $DB->delete_records(linked_login::TABLE, ['userid' => $userid]);
+ }
}