Authority url validator
This commit is contained in:
parent
5480df4cfb
commit
1180d518a2
9 changed files with 103 additions and 16 deletions
|
|
@ -27,6 +27,11 @@ public interface IOidcService
|
|||
/// <returns></returns>
|
||||
/// <exception cref="KavitaException">if any requirements aren't met</exception>
|
||||
Task<AppUser?> LoginOrCreate(ClaimsPrincipal principal);
|
||||
/// <summary>
|
||||
/// Remove <see cref="AppUser.ExternalId"/> from all users
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task ClearOidcIds();
|
||||
}
|
||||
|
||||
public class OidcService(ILogger<OidcService> logger, UserManager<AppUser> userManager,
|
||||
|
|
@ -46,7 +51,7 @@ public class OidcService(ILogger<OidcService> logger, UserManager<AppUser> userM
|
|||
var user = await unitOfWork.UserRepository.GetByExternalId(externalId, AppUserIncludes.UserPreferences);
|
||||
if (user != null)
|
||||
{
|
||||
//await SyncUserSettings(settings, principal, user);
|
||||
// await SyncUserSettings(settings, principal, user);
|
||||
return user;
|
||||
}
|
||||
|
||||
|
|
@ -64,7 +69,7 @@ public class OidcService(ILogger<OidcService> logger, UserManager<AppUser> userM
|
|||
|
||||
user.ExternalId = externalId;
|
||||
|
||||
//await SyncUserSettings(settings, principal, user);
|
||||
await SyncUserSettings(settings, principal, user);
|
||||
|
||||
var roles = await userManager.GetRolesAsync(user);
|
||||
if (roles.Count > 0 && !roles.Contains(PolicyConstants.LoginRole))
|
||||
|
|
@ -73,6 +78,17 @@ public class OidcService(ILogger<OidcService> logger, UserManager<AppUser> userM
|
|||
return user;
|
||||
}
|
||||
|
||||
public async Task ClearOidcIds()
|
||||
{
|
||||
var users = await unitOfWork.UserRepository.GetAllUsersAsync();
|
||||
foreach (var user in users)
|
||||
{
|
||||
user.ExternalId = null;
|
||||
}
|
||||
|
||||
await unitOfWork.CommitAsync();
|
||||
}
|
||||
|
||||
private async Task<AppUser?> NewUserFromOpenIdConnect(OidcConfigDto settings, ClaimsPrincipal claimsPrincipal)
|
||||
{
|
||||
if (!settings.ProvisionAccounts) return null;
|
||||
|
|
@ -133,10 +149,12 @@ public class OidcService(ILogger<OidcService> logger, UserManager<AppUser> userM
|
|||
var userRoles = await userManager.GetRolesAsync(user);
|
||||
if (userRoles.Contains(PolicyConstants.AdminRole)) return;
|
||||
|
||||
|
||||
await SyncRoles(claimsPrincipal, user);
|
||||
await SyncLibraries(claimsPrincipal, user);
|
||||
SyncAgeRating(claimsPrincipal, user);
|
||||
|
||||
|
||||
if (unitOfWork.HasChanges())
|
||||
await unitOfWork.CommitAsync();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue