Merge pull request #10460 from appwrite/fix-oauth-identities-check

Fix: oauth identity check
This commit is contained in:
Matej Bačo 2025-09-08 15:13:49 +02:00 committed by GitHub
commit cbd1d75aa4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1535,22 +1535,22 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect')
*/
$isVerified = $oauth2->isEmailVerified($accessToken);
$userWithEmail = $dbForProject->findOne('users', [
Query::equal('email', [$email]),
$identity = $dbForProject->findOne('identities', [
Query::equal('provider', [$provider]),
Query::equal('providerUid', [$oauth2ID]),
]);
if (!$userWithEmail->isEmpty()) {
$user->setAttributes($userWithEmail->getArrayCopy());
if (!$identity->isEmpty()) {
$user = $dbForProject->getDocument('users', $identity->getAttribute('userId'));
}
// If user is not found, check if there is an identity with the same provider user ID
if ($user === false || $user->isEmpty()) {
$identity = $dbForProject->findOne('identities', [
Query::equal('provider', [$provider]),
Query::equal('providerUid', [$oauth2ID]),
$userWithEmail = $dbForProject->findOne('users', [
Query::equal('email', [$email]),
]);
if (!$identity->isEmpty()) {
$user = $dbForProject->getDocument('users', $identity->getAttribute('userId'));
if (!$userWithEmail->isEmpty()) {
$user->setAttributes($userWithEmail->getArrayCopy());
}
}