Exemple #1
0
        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;
            }
        }