public async Task <TokenApiModel> RegisterUserAsync(UserRegisterApiModel model)
        {
            var searchUser = _userManager.FindByEmailAsync(model.Email).Result;

            if (searchUser != null && searchUser.IsDeleted == true)
            {
                throw new UserIsDeletedException(_resourceManager.GetString("UserIsDeleted"));
            }

            if (searchUser != null)
            {
                throw new BadRequestException(_resourceManager.GetString("EmailExist"));
            }

            if (!model.Password.Equals(model.ConfirmPassword))
            {
                throw new BadRequestException(_resourceManager.GetString("PasswordsNotMatch"));
            }

            var userByUsername = _userManager.FindByNameAsync(model.UserName).Result;

            if (userByUsername != null)
            {
                throw new BadRequestException(_resourceManager.GetString("UsernameExist"));
            }

            var dbUser = new DbUser
            {
                Email    = model.Email,
                UserName = model.UserName,
            };

            var resultCreated = await _userRepository.CreateAsync(dbUser, model.Password);

            if (!resultCreated.Succeeded)
            {
                throw new BadRequestException(resultCreated.Errors.First().Description);
            }

            await _userRepository.CreateProfileAsync(dbUser.Id);

            await ConfirmMailSendLinkOnEmailAsync(dbUser.Email);

            var token        = _jwtService.CreateToken(_jwtService.SetClaims(dbUser));
            var refreshToken = _jwtService.CreateRefreshToken();

            await _userRepository.UpdateUserTokenAsync(dbUser.Id, refreshToken);

            await _signInManager.SignInAsync(dbUser, isPersistent : false);

            return(new TokenApiModel {
                Token = token, RefreshToken = refreshToken
            });
        }
Exemple #2
0
        public async Task <IActionResult> Register([FromBody] UserRegisterApiModel model)
        {
            var validator   = new RegisterValidator(_recaptcha, _resourceManager);
            var validResult = validator.Validate(model);

            if (!validResult.IsValid)
            {
                return(BadRequest(new MessageApiModel()
                {
                    Message = validResult.ToString()
                }));
            }

            var RegisterResult = await _accountService.RegisterUserAsync(model);

            return(Created("", RegisterResult));
        }
Exemple #3
0
        public async Task <HttpResponseMessage> UserRegister([FromBody] UserRegisterApiModel model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    if (model.IsValid == false)
                    {
                        return(Request.CreateResponse(HttpStatusCode.BadRequest, MessagesResources.RegisterUserInvalidData));
                    }

                    if (await ValidateUserName(model.Email) == false)
                    {
                        return(Request.CreateResponse(HttpStatusCode.BadRequest, MessagesResources.RegisterUserEmailExist));
                    }

                    var user = new ApplicationUser
                    {
                        Id             = Guid.NewGuid(),
                        UserName       = model.Email,
                        Email          = model.Email,
                        EmailConfirmed = true,
                    };

                    var result = await UserManager.CreateAsync(user, model.Password);

                    if (result.Succeeded)
                    {
                        UserManager.AddToRole(user.Id, "User");
                        return(Request.CreateResponse(HttpStatusCode.OK));
                    }
                    else
                    {
                        return(Request.CreateResponse(HttpStatusCode.BadRequest, MessagesResources.RegisterUserFail));
                    }
                }
                return(Request.CreateResponse(HttpStatusCode.BadRequest, MessagesResources.GeneralError));
            }
            catch (Exception exception)
            {
                ErrorLog.GetDefault(HttpContext.Current).Log(new Error(exception));
                return(Request.CreateResponse(HttpStatusCode.BadRequest, MessagesResources.GeneralError));
            }
        }