public async Task<ActionResult> Create(CreateUserViewModel model)
{
try
{
if (!ModelState.IsValid)
{
ViewBag.ErrorMessage = "Something went wrong. Please try again.";
return View(GetDefaultCreateUserModel());
}
var user = new BlogUser { UserName = model.Username, Email = model.Email };
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
var roleResult = await UserManager.AddToRolesAsync(user.Id, new[] { model.SelectedRole });
if (!roleResult.Succeeded)
{
AddErrors(roleResult);
return View(GetDefaultCreateUserModel());
}
if (model.IdentityOnly) return RedirectToAction("Index", "Users");
var blogUser = await _userHelper.AddBlogUser(model);
if (blogUser.Error == null) return RedirectToAction("Index", "Users");
ViewBag.UserCreationError = blogUser.Error.Message;
return View(model);
}
AddErrors(result);
return View(GetDefaultCreateUserModel());
}
catch (Exception ex)
{
_errorSignaler.SignalFromCurrentContext(ex);
ViewBag.ErrorMessage = ex.Message;
return View(GetDefaultCreateUserModel());
}
}