mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-05-31 04:04:21 -04:00
Prevent two accounts from behing linked to the same external account
This commit is contained in:
parent
25b7903c37
commit
08f3e9c06b
@ -112,9 +112,12 @@ public class OidcController(
|
|||||||
return user;
|
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);
|
(_, 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);
|
return await users.AddExternalToken(userId, provider, extToken);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -173,7 +173,7 @@ namespace Kyoo.Authentication.Views
|
|||||||
|
|
||||||
Guid? userId = User.GetId();
|
Guid? userId = User.GetId();
|
||||||
User user = userId.HasValue
|
User user = userId.HasValue
|
||||||
? await oidc.LinkAccount(userId.Value, provider, code)
|
? await oidc.LinkAccountOrLogin(userId.Value, provider, code)
|
||||||
: await oidc.LoginViaCode(provider, code);
|
: await oidc.LoginViaCode(provider, code);
|
||||||
return new JwtToken(
|
return new JwtToken(
|
||||||
tokenController.CreateAccessToken(user, out TimeSpan expireIn),
|
tokenController.CreateAccessToken(user, out TimeSpan expireIn),
|
||||||
|
@ -59,7 +59,7 @@ namespace Kyoo.Tests.Database
|
|||||||
SeasonRepository season = new(_NewContext(), thumbs.Object);
|
SeasonRepository season = new(_NewContext(), thumbs.Object);
|
||||||
LibraryItemRepository libraryItem = new(_NewConnection(), new(null));
|
LibraryItemRepository libraryItem = new(_NewConnection(), new(null));
|
||||||
EpisodeRepository episode = new(_NewContext(), show, thumbs.Object);
|
EpisodeRepository episode = new(_NewContext(), show, thumbs.Object);
|
||||||
UserRepository user = new(_NewContext(), _NewConnection(), new(null), thumbs.Object);
|
UserRepository user = new(_NewContext(), _NewConnection(), new(null), thumbs.Object, new());
|
||||||
|
|
||||||
_repositories = new IBaseRepository[]
|
_repositories = new IBaseRepository[]
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user