public async Task <IActionResult> CreateUser(RegisterAdminUser10 user) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var result = await _service.Create(user); if (result.ErrorMessage == null) { return(Ok(result)); } return(BadRequest(result.ErrorMessage)); }
public async Task <AdminUserDetailsVM> Create(RegisterAdminUser10 user) { try { var admin = await _userManager.FindByIdAsync(user.AdminId); if (admin == null) { throw new Exception("Could not find the active user."); } var adminResult = await _userManager.VerifyUserTokenAsync(admin, "Default", "authentication-backend", user.AdminToken); if (!adminResult) { throw new Exception("Could not verify the active user."); } if (_userManager.FindByNameAsync(user.UserName).Result != null) { throw new Exception("This username is already in use."); } if (user.Password != user.ComparePassword) { throw new Exception("The passwords does not match."); } var appUser = new AppUser10 { UserName = user.UserName, FirstName = user.FirstName, LastName = user.LastName, Age = user.Age, Email = user.Email, SecurityStamp = user.SecurityStamp, IsAdmin = user.IsAdmin }; var result = await _userManager.CreateAsync(appUser, user.Password); if (result.Succeeded) { var roles = await _roleManager.Roles.ToListAsync(); List <string> roleNames = new List <string>(); roles.ForEach(x => roleNames.Add(x.Name)); var newUser = await _userManager.FindByNameAsync(user.UserName); _ = user.IsAdmin == true ? await _userManager.AddToRolesAsync(newUser, roleNames) : await _userManager.AddToRoleAsync(newUser, "NormalUser"); AdminUserDetailsVM userVM = new AdminUserDetailsVM { AdminId = admin.Id, FrontEndToken = VerificationToken(), AdminToken = await UserToken(admin), User = new DetailsVM { UserId = newUser.Id, UserName = newUser.UserName, FirstName = newUser.FirstName, LastName = newUser.LastName, Age = newUser.Age, Email = newUser.Email, Roles = new List <string>(roleNames), IsAdmin = newUser.IsAdmin } }; return(userVM); } else { throw new Exception("Something went wrong. Please check all inputs and then try again."); } } catch (Exception ex) { AdminUserDetailsVM userVM = new AdminUserDetailsVM { ErrorMessage = ex.Message }; return(userVM); } }