Browse Source

updated custom identity user app service

pull/180/head
Galip Tolga Erdem 3 years ago
parent
commit
b34c4ba4af
  1. 31
      services/identity/src/EShopOnAbp.IdentityService.Application/BackgroundJobs/User/KeycloakUserCreationJob.cs
  2. 9
      services/identity/src/EShopOnAbp.IdentityService.Application/BackgroundJobs/User/KeycloakUserDeletionJob.cs
  3. 23
      services/identity/src/EShopOnAbp.IdentityService.Application/BackgroundJobs/User/KeycloakUserUpdatingJob.cs
  4. 31
      services/identity/src/EShopOnAbp.IdentityService.Application/EShopIdentityUserAppService.cs

31
services/identity/src/EShopOnAbp.IdentityService.Application/BackgroundJobs/User/KeycloakUserCreationJob.cs

@ -7,6 +7,7 @@ using Microsoft.Extensions.Logging;
using Volo.Abp.BackgroundJobs;
using Volo.Abp.DependencyInjection;
using Keycloak.Net.Models.Users;
using Volo.Abp.Identity;
namespace EShopOnAbp.IdentityService.BackgroundJobs.User;
@ -31,6 +32,7 @@ public class KeycloakUserCreationJob : AsyncBackgroundJob<IdentityUserCreationAr
FirstName = args.Name,
LastName = args.Surname,
Enabled = args.IsActive,
// EmailVerified = true,
Credentials = new List<Credentials>()
{
new() { Type = "password", Value = args.Password }
@ -70,11 +72,26 @@ public class KeycloakUserCreationJob : AsyncBackgroundJob<IdentityUserCreationAr
public class IdentityUserCreationArgs
{
public string Email { get; set; }
public string UserName { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public string Password { get; set; }
public bool IsActive { get; set; }
public string[] RoleNames { get; set; }
public string Email { get; init; }
public string UserName { get; init; }
public string Name { get; init; }
public string Surname { get; init; }
public string Password { get; init; }
public bool IsActive { get; init; }
public string[] RoleNames { get; init; }
public IdentityUserCreationArgs()
{
}
public IdentityUserCreationArgs(IdentityUserCreateDto input)
{
Email = input.Email;
UserName = input.UserName;
Name = input.Name;
Surname = input.Surname;
Password = input.Password;
IsActive = input.IsActive;
RoleNames = input.RoleNames;
}
}

9
services/identity/src/EShopOnAbp.IdentityService.Application/BackgroundJobs/User/KeycloakUserDeletionJob.cs

@ -48,5 +48,12 @@ public class KeycloakUserDeletionJob : AsyncBackgroundJob<IdentityUserDeletionAr
public class IdentityUserDeletionArgs
{
public string UserName { get; set; }
public string UserName { get; init; }
public IdentityUserDeletionArgs() { }
public IdentityUserDeletionArgs(string userName)
{
UserName = userName;
}
}

23
services/identity/src/EShopOnAbp.IdentityService.Application/BackgroundJobs/User/KeycloakUserUpdatingJob.cs

@ -8,6 +8,7 @@ using Microsoft.Extensions.Options;
using Volo.Abp;
using Volo.Abp.BackgroundJobs;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Identity;
namespace EShopOnAbp.IdentityService.BackgroundJobs.User;
@ -26,7 +27,7 @@ public class KeycloakUserUpdatingJob : AsyncBackgroundJob<IdentityUserUpdatingAr
{
try
{
var keycloakUser = (await _keycloakService.GetUsersAsync( username: args.UserName))
var keycloakUser = (await _keycloakService.GetUsersAsync(username: args.UserName))
.First();
if (keycloakUser == null)
{
@ -42,7 +43,7 @@ public class KeycloakUserUpdatingJob : AsyncBackgroundJob<IdentityUserUpdatingAr
keycloakUser.EmailVerified = args.EmailConfirmed;
var result =
await _keycloakService.UpdateUserAsync( keycloakUser.Id, keycloakUser);
await _keycloakService.UpdateUserAsync(keycloakUser.Id, keycloakUser);
if (result)
{
_logger.LogInformation($"Keycloak user with the username:{args.UserName} has been updated.");
@ -50,18 +51,20 @@ public class KeycloakUserUpdatingJob : AsyncBackgroundJob<IdentityUserUpdatingAr
}
catch (Exception e)
{
_logger.LogError($"Keycloak user updating failed! Username:{args.UserName}");
_logger.LogWarning($"Keycloak user updating failed! Username:{args.UserName}");
throw new UserFriendlyException($"Keycloak user updating failed! Username:{args.UserName}",
innerException: e);
}
}
}
public class IdentityUserUpdatingArgs
{
public string Email { get; set; }
public string UserName { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public bool EmailConfirmed { get; set; }
public bool IsActive { get; set; }
public string[] RoleNames { get; set; }
public string Email { get; init; }
public string UserName { get; init; }
public string Name { get; init; }
public string Surname { get; init; }
public bool EmailConfirmed { get; init; }
public bool IsActive { get; init; }
public string[] RoleNames { get; init; }
}

31
services/identity/src/EShopOnAbp.IdentityService.Application/EShopIdentityUserAppService.cs

@ -1,6 +1,6 @@
using System;
using System.Threading.Tasks;
using EShopOnAbp.IdentityService.BackgroundJobs;
using EShopOnAbp.IdentityService.BackgroundJobs.User;
using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.Options;
using Volo.Abp.BackgroundJobs;
@ -12,33 +12,27 @@ namespace EShopOnAbp.IdentityService;
[ExposeServices(typeof(IdentityUserAppService), typeof(IIdentityUserAppService))]
public class EShopIdentityUserAppService : IdentityUserAppService
{
private readonly IdentityUserManager _userManager;
private readonly IBackgroundJobManager _backgroundJobManager;
private readonly IIdentityUserRepository _userRepository;
public EShopIdentityUserAppService(
IdentityUserManager userManager,
IIdentityUserRepository userRepository,
IIdentityRoleRepository roleRepository,
IOptions<IdentityOptions> identityOptions, IBackgroundJobManager backgroundJobManager) : base(userManager,
IOptions<IdentityOptions> identityOptions,
IBackgroundJobManager backgroundJobManager) : base(userManager,
userRepository,
roleRepository,
identityOptions)
{
_userManager = userManager;
_backgroundJobManager = backgroundJobManager;
_userRepository = userRepository;
}
public override async Task<IdentityUserDto> CreateAsync(IdentityUserCreateDto input)
{
var createdUser = await base.CreateAsync(input);
await _backgroundJobManager.EnqueueAsync(new IdentityUserCreationArgs
{
Email = createdUser.Email,
UserName = createdUser.UserName,
Name = createdUser.Name,
Surname = createdUser.Surname,
Password = input.Password
});
await _backgroundJobManager.EnqueueAsync(new IdentityUserCreationArgs(input));
return createdUser;
}
@ -52,7 +46,9 @@ public class EShopIdentityUserAppService : IdentityUserAppService
UserName = updatedUser.UserName,
Name = updatedUser.Name,
Surname = updatedUser.Surname,
EmailConfirmed = updatedUser.EmailConfirmed
EmailConfirmed = updatedUser.EmailConfirmed,
IsActive = input.IsActive,
RoleNames = input.RoleNames
});
return updatedUser;
@ -60,12 +56,11 @@ public class EShopIdentityUserAppService : IdentityUserAppService
public override async Task DeleteAsync(Guid id)
{
var user = await _userRepository.FindAsync(id);
var user = await _userManager.FindByIdAsync(id.ToString());
await base.DeleteAsync(id);
await _backgroundJobManager.EnqueueAsync(new IdentityUserDeletionArgs
if (user != null)
{
UserName = user.UserName
});
await _backgroundJobManager.EnqueueAsync(new IdentityUserDeletionArgs(user.UserName));
}
}
}
Loading…
Cancel
Save