diff --git a/services/identity/src/EShopOnAbp.IdentityService.Application/BackgroundJobs/KeycloakUserCreationJob.cs b/services/identity/src/EShopOnAbp.IdentityService.Application/BackgroundJobs/User/KeycloakUserCreationJob.cs similarity index 52% rename from services/identity/src/EShopOnAbp.IdentityService.Application/BackgroundJobs/KeycloakUserCreationJob.cs rename to services/identity/src/EShopOnAbp.IdentityService.Application/BackgroundJobs/User/KeycloakUserCreationJob.cs index 1da1cbca..0727351e 100644 --- a/services/identity/src/EShopOnAbp.IdentityService.Application/BackgroundJobs/KeycloakUserCreationJob.cs +++ b/services/identity/src/EShopOnAbp.IdentityService.Application/BackgroundJobs/User/KeycloakUserCreationJob.cs @@ -1,43 +1,36 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Threading.Tasks; -using Keycloak.Net; -using Keycloak.Net.Models.Users; +using EShopOnAbp.IdentityService.Keycloak; using Microsoft.Extensions.Logging; -using Microsoft.Extensions.Options; using Volo.Abp.BackgroundJobs; using Volo.Abp.DependencyInjection; +using Keycloak.Net.Models.Users; -namespace EShopOnAbp.IdentityService.BackgroundJobs; +namespace EShopOnAbp.IdentityService.BackgroundJobs.User; public class KeycloakUserCreationJob : AsyncBackgroundJob, ITransientDependency { - private readonly KeycloakClient _keycloakClient; - private readonly KeycloakClientOptions _keycloakOptions; - private readonly ILogger _logger; + private readonly KeycloakService _keycloakService; + private readonly ILogger _logger; - public KeycloakUserCreationJob(IOptions keycloakOptions, + public KeycloakUserCreationJob(KeycloakService keycloakService, ILogger logger) { _logger = logger; - _keycloakOptions = keycloakOptions.Value; - - _keycloakClient = new KeycloakClient( - _keycloakOptions.Url, - _keycloakOptions.AdminUserName, - _keycloakOptions.AdminPassword - ); + _keycloakService = keycloakService; } public override async Task ExecuteAsync(IdentityUserCreationArgs args) { - var keycloakUser = new User + var keycloakUser = new global::Keycloak.Net.Models.Users.User() { Email = args.Email, UserName = args.UserName, FirstName = args.Name, LastName = args.Surname, - Enabled = true, + Enabled = args.IsActive, Credentials = new List() { new() { Type = "password", Value = args.Password } @@ -46,9 +39,14 @@ public class KeycloakUserCreationJob : AsyncBackgroundJob roleNames.Contains(q.Name)); + + await _keycloakService.AddRolesToUserAsync(user.Id, roles); + _logger.LogInformation($"Keycloak roles:{roleNames} has been added to user with the username:{userName}."); + } } public class IdentityUserCreationArgs @@ -67,4 +75,6 @@ public class IdentityUserCreationArgs 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; } } \ No newline at end of file diff --git a/services/identity/src/EShopOnAbp.IdentityService.Application/BackgroundJobs/IdentityUserDeletionJob.cs b/services/identity/src/EShopOnAbp.IdentityService.Application/BackgroundJobs/User/KeycloakUserDeletionJob.cs similarity index 56% rename from services/identity/src/EShopOnAbp.IdentityService.Application/BackgroundJobs/IdentityUserDeletionJob.cs rename to services/identity/src/EShopOnAbp.IdentityService.Application/BackgroundJobs/User/KeycloakUserDeletionJob.cs index 21206599..9a7c2517 100644 --- a/services/identity/src/EShopOnAbp.IdentityService.Application/BackgroundJobs/IdentityUserDeletionJob.cs +++ b/services/identity/src/EShopOnAbp.IdentityService.Application/BackgroundJobs/User/KeycloakUserDeletionJob.cs @@ -1,39 +1,31 @@ using System; using System.Linq; using System.Threading.Tasks; -using Keycloak.Net; +using EShopOnAbp.IdentityService.Keycloak; using Microsoft.Extensions.Logging; -using Microsoft.Extensions.Options; using Volo.Abp; using Volo.Abp.BackgroundJobs; using Volo.Abp.DependencyInjection; -namespace EShopOnAbp.IdentityService.BackgroundJobs; +namespace EShopOnAbp.IdentityService.BackgroundJobs.User; -public class IdentityUserDeletionJob : AsyncBackgroundJob, ITransientDependency +public class KeycloakUserDeletionJob : AsyncBackgroundJob, ITransientDependency { - private readonly KeycloakClient _keycloakClient; - private readonly KeycloakClientOptions _keycloakOptions; - private readonly ILogger _logger; + private readonly KeycloakService _keycloakService; + private readonly ILogger _logger; - public IdentityUserDeletionJob(IOptions keycloakOptions, + public KeycloakUserDeletionJob(KeycloakService keycloakService, ILogger logger) { + _keycloakService = keycloakService; _logger = logger; - _keycloakOptions = keycloakOptions.Value; - - _keycloakClient = new KeycloakClient( - _keycloakOptions.Url, - _keycloakOptions.AdminUserName, - _keycloakOptions.AdminPassword - ); } public override async Task ExecuteAsync(IdentityUserDeletionArgs args) { try { - var keycloakUser = (await _keycloakClient.GetUsersAsync(_keycloakOptions.RealmName, username: args.UserName)) + var keycloakUser = (await _keycloakService.GetUsersAsync(username: args.UserName)) .First(); if (keycloakUser == null) { @@ -41,7 +33,7 @@ public class IdentityUserDeletionJob : AsyncBackgroundJob, ITransientDependency { - private readonly KeycloakClient _keycloakClient; - private readonly KeycloakClientOptions _keycloakOptions; + private readonly KeycloakService _keycloakService; private readonly ILogger _logger; - public KeycloakUserUpdatingJob(IOptions keycloakOptions, ILogger logger) + public KeycloakUserUpdatingJob(KeycloakService keycloakService, ILogger logger) { + _keycloakService = keycloakService; _logger = logger; - _keycloakOptions = keycloakOptions.Value; - - _keycloakClient = new KeycloakClient( - _keycloakOptions.Url, - _keycloakOptions.AdminUserName, - _keycloakOptions.AdminPassword - ); } public override async Task ExecuteAsync(IdentityUserUpdatingArgs args) { try { - var keycloakUser = (await _keycloakClient.GetUsersAsync(_keycloakOptions.RealmName, username: args.UserName)) + var keycloakUser = (await _keycloakService.GetUsersAsync( username: args.UserName)) .First(); if (keycloakUser == null) { @@ -45,9 +38,11 @@ public class KeycloakUserUpdatingJob : AsyncBackgroundJob