public async Task <AuthenticationDto> RegisterAsync(string email, string password, string name) { var existingUser = await _userManager.FindByEmailAsync(email); if (existingUser != null) { return new AuthenticationDto { Errors = new[] { "User with this email address already exists" } } } ; var newUserGuid = Guid.NewGuid(); var newUser = new AppUser { Id = newUserGuid.ToString(), Email = email, UserName = email, Name = name }; var created = await _userManager.CreateAsync(newUser, password); if (!created.Succeeded) { return new AuthenticationDto { Errors = created.Errors.Select(x => x.Description) } } ; await _userManager.AddToRoleAsync(newUser, DefaultIdentity.RoleUser); var addUserInMySqlDb = await _mySqlDataContext.CreateUser(newUserGuid, name, 0); if (!addUserInMySqlDb) { await _userManager.DeleteAsync(newUser); return(new AuthenticationDto { Errors = new[] { "Problem on writing entry in DATA SERVICE DB" }, CriticalError = true }); } await _securityService.SendEmailConfirmationRequestAsync(email); return(await GenerateAuthenticationResultForUserAsync(newUser)); }
public async Task Initialize() { if (!await _roleManager.RoleExistsAsync(DefaultIdentity.RoleAdmin)) { await _roleManager.CreateAsync(new IdentityRole(DefaultIdentity.RoleAdmin)); } if (!await _roleManager.RoleExistsAsync(DefaultIdentity.RoleUser)) { await _roleManager.CreateAsync(new IdentityRole(DefaultIdentity.RoleUser)); } if (await _userManager.FindByEmailAsync(DefaultIdentity.DefaultAdminUserName) is null) { var guid = Guid.NewGuid(); var admin = new AppUser { Id = guid.ToString(), UserName = DefaultIdentity.DefaultAdminUserName, Email = DefaultIdentity.DefaultAdminUserName, EmailConfirmed = true, Name = DefaultIdentity.DefaultAdminName }; var creationResult = await _userManager.CreateAsync(admin, DefaultIdentity.DefaultAdminPassword); if (creationResult.Succeeded) { await _userManager.AddToRoleAsync(admin, DefaultIdentity.RoleAdmin); await _userManager.AddToRoleAsync(admin, DefaultIdentity.RoleUser); } var addUserInMySqlDb = await _mySqlDataContext.CreateUser(guid, DefaultIdentity.DefaultAdminUserName, 10); if (!addUserInMySqlDb) { await _userManager.DeleteAsync(admin); } } }