mirror of
https://github.com/zoriya/Kyoo.git
synced 2026-05-21 14:46:29 -04:00
Prevent two accounts from behing linked to the same external account
This commit is contained in:
@@ -112,9 +112,12 @@ public class OidcController(
|
||||
return user;
|
||||
}
|
||||
|
||||
public async Task<User> LinkAccount(Guid userId, string provider, string code)
|
||||
public async Task<User> LinkAccountOrLogin(Guid userId, string provider, string code)
|
||||
{
|
||||
(_, ExternalToken extToken) = await _TranslateCode(provider, code);
|
||||
User? user = await users.GetByExternalId(provider, extToken.Id);
|
||||
if (user != null)
|
||||
return user;
|
||||
return await users.AddExternalToken(userId, provider, extToken);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -173,7 +173,7 @@ namespace Kyoo.Authentication.Views
|
||||
|
||||
Guid? userId = User.GetId();
|
||||
User user = userId.HasValue
|
||||
? await oidc.LinkAccount(userId.Value, provider, code)
|
||||
? await oidc.LinkAccountOrLogin(userId.Value, provider, code)
|
||||
: await oidc.LoginViaCode(provider, code);
|
||||
return new JwtToken(
|
||||
tokenController.CreateAccessToken(user, out TimeSpan expireIn),
|
||||
|
||||
Reference in New Issue
Block a user