public async Task <IActionResult> Register([FromBody] RegisterModel model) { try { if (!this.ModelState.IsValid) { return(BadRequest(this.ModelState)); } var user = new IdentityUser { UserName = model.Name, Email = model.Email }; var result = await _userManager.CreateAsync(user, model.Password); if (result.Succeeded) { this._userDao.Update(model.ToEntity(user)); await _signInManager.SignInAsync(user, false); model.UserRoles = _userRoleDao.GetByUser(user.Id).ToModels(); model.Token = await GenerateJwtToken(model.Email, user, model.UserRoles); this.SendWellcomeEmail(); return(Ok(model.ClearPassword())); } foreach (var currentError in result.Errors) { if (currentError.Code == "DuplicateUserName") { this.ModelState.AddModelError("Email", currentError.Description); } else { this.ModelState.AddModelError("Password", currentError.Description); } } return(BadRequest(this.ModelState)); } catch (Exception ex) { _logger.ErrorAsync(ex, null); throw ex; } }