private async Task CreateAccount(CreateAccount command) { var payload = command.Payload; var response = new Dictionary <string, string>(); try { var user = new HostelUser { UserName = payload["Email"], Email = payload["Email"], PhoneNumber = payload["Phone"], Hostel = "Baafog" }; var created = await _userManager.CreateAsync(user, payload["Password"]); if (created.Succeeded) { var userClaims = new List <Claim>(); var userRole = payload["Role"]; userClaims.Add(new Claim(JwtClaimTypes.Role, userRole)); userClaims.AddRange(new Claim[] { new Claim("PreferredUserName", payload["Email"]), new Claim("Role", userRole) }); var claim = await _userManager.AddClaimsAsync(user, userClaims); if (!claim.Succeeded) { await _userManager.DeleteAsync(user); response["Created"] = "false"; response["Type"] = "AddClaimsAsync"; response["Errors"] = string.Join(", ", claim.Errors); response["Message"] = "Your account created was aborted"; } } else { response["Created"] = "false"; response["Type"] = "CreateAsync"; response["Errors"] = string.Join(", ", created.Errors); response["Message"] = "Your account was not created"; } } catch (Exception e) { response["Message"] = e.Message; } var @event = new MassTransitEvent("AccountCreated", command.Commander, command.CommandId, response); await SendToQueue(@event); await Self.GracefulStop(TimeSpan.FromSeconds(10)); }
public static void EnsureSeedData(IServiceProvider serviceProvider, IConfiguration configuration) { //Console.WriteLine("Seeding database..."); using (var scope = serviceProvider.GetRequiredService <IServiceScopeFactory>().CreateScope()) { scope.ServiceProvider.GetRequiredService <PersistedGrantDbContext>().Database.Migrate(); { var context = scope.ServiceProvider.GetRequiredService <ConfigurationDbContext>(); context.Database.Migrate(); EnsureSeedData(context, configuration); } { var context = scope.ServiceProvider.GetService <ApplicationDbContext>(); context.Database.Migrate(); var userMgr = scope.ServiceProvider.GetRequiredService <UserManager <HostelUser> >(); var alice = userMgr.FindByNameAsync("*****@*****.**").Result; if (alice == null) { alice = new HostelUser { UserName = "******", Email = "*****@*****.**", EmailConfirmed = true, PhoneNumber = "2348136786808", PhoneNumberConfirmed = true, TwoFactorEnabled = true }; var result = userMgr.CreateAsync(alice, "alicechukwu").Result; if (!result.Succeeded) { throw new Exception(result.Errors.First().Description); } result = userMgr.AddClaimsAsync(alice, new Claim[] { new Claim(JwtClaimTypes.Role, "Tester"), new Claim(JwtClaimTypes.PreferredUserName, "*****@*****.**"), new Claim(JwtClaimTypes.Name, "Ebere Abanonu"), new Claim(JwtClaimTypes.GivenName, "Ebere"), new Claim(JwtClaimTypes.FamilyName, "Abanonu"), new Claim(JwtClaimTypes.Email, "*****@*****.**"), new Claim(JwtClaimTypes.EmailVerified, "true", ClaimValueTypes.Boolean), new Claim(JwtClaimTypes.WebSite, "http://alice.com"), new Claim(JwtClaimTypes.Address, @"{ 'street_address': 'One Hacker Way', 'locality': 'Heidelberg', 'postal_code': 69118, 'country': 'Germany' }", IdentityServer4.IdentityServerConstants.ClaimValueTypes.Json), new Claim("TimeZone", "W. Central Africa Standard Time"), }).Result; if (!result.Succeeded) { throw new Exception(result.Errors.First().Description); } //Console.WriteLine("alice created"); } else { //Console.WriteLine("alice already exists"); } } } //Console.WriteLine("Done seeding database."); //Console.WriteLine(); }
private async Task CreateAccount(CreateAccount command) { using (var context = Context.CreateScope()) { var userManager = context.ServiceProvider.GetRequiredService <UserManager <HostelUser> >(); var payload = command.Payload; var response = new Dictionary <string, string>(); try { var user = new HostelUser { UserName = payload["Email"], Email = payload["Email"], PhoneNumber = payload["Phone"], EmailConfirmed = true, PhoneNumberConfirmed = true, TwoFactorEnabled = false }; var created = await userManager.CreateAsync(user, payload["Password"]); if (created.Succeeded) { var userClaims = new List <Claim>(); var userRole = payload["Role"]; userClaims.Add(new Claim("role", userRole)); userClaims.Add(new Claim("PreferredUserName", payload["Email"])); var claim = await userManager.AddClaimsAsync(user, userClaims); if (!claim.Succeeded) { await userManager.DeleteAsync(user); response["Success"] = "false"; response["Errors"] = string.Join(", ", claim.Errors); response["Message"] = "Your account created was aborted"; } else { response["Success"] = "true"; response["Errors"] = string.Join(", ", created.Errors); response["Message"] = "Your account created successfully!!"; } } else { response["Success"] = "false"; response["Errors"] = string.Join(", ", created.Errors); response["Message"] = "Your account was not created"; } } catch (Exception e) { response["Success"] = "false"; response["Errors"] = e.Message; response["Message"] = e.Message; } var @event = new MassTransitEvent("AccountCreated", command.Commander, command.CommandId, response); await SendToQueue(@event); await Self.GracefulStop(TimeSpan.FromSeconds(10)); } }