mirror of
				https://github.com/zoriya/Kyoo.git
				synced 2025-11-03 19:17:16 -05: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