public async Task <IActionResult> Register(ApiRegister register, [FromServices] RoleManager <IdentityRole> roleManager, [FromServices] UserManager <IdentityUser> userManager) { var user = new IdentityUser(register.Username); IdentityResult createUserResult = await userManager.CreateAsync(user, register.Password); if (!createUserResult.Succeeded) // e.g. did not meet password policy { return(BadRequest(createUserResult)); } if (register.IsAdmin) { // make sure admin role exists if (!await roleManager.RoleExistsAsync("admin")) { var role = new IdentityRole("admin"); IdentityResult createRoleResult = await roleManager.CreateAsync(role); if (!createRoleResult.Succeeded) { return(StatusCode(StatusCodes.Status500InternalServerError, "failed to create admin role")); } } // add user to admin role IdentityResult addRoleResult = await userManager.AddToRoleAsync(user, "admin"); if (!addRoleResult.Succeeded) { return(StatusCode(StatusCodes.Status500InternalServerError, "failed to add user to admin role")); } } await SignInManager.SignInAsync(user, false); return(NoContent()); // nothing to show the user that he can access }
public async Task <ActionResult> Register(ApiRegister register) { if (!ModelState.IsValid) { return(View(register)); } HttpRequestMessage request = CreateRequestToService(HttpMethod.Post, Configuration["ServiceEndpoints:AccountRegister"], register); HttpResponseMessage response; try { response = await HttpClient.SendAsync(request); } catch (HttpRequestException) { ModelState.AddModelError("", "Unexpected server error"); return(View(register)); } if (!response.IsSuccessStatusCode) { ModelState.AddModelError("", "Unexpected server error"); return(View(register)); } var success = PassCookiesToClient(response); if (!success) { ModelState.AddModelError("", "Unexpected server error"); return(View(register)); } // login success return(RedirectToAction("Index", "Home")); }