Exemple #1
0
        public async Task <dynamic> CreateNewAccount(dynamic accountDto)
        {
            if (accountDto == null)
            {
                throw new ArgumentNullException(nameof(accountDto));
            }

            var account = Mapper.Map <User>(accountDto);

            if (await _validateAccount.CheckAccountExist(accountDto.UserName))
            {
                return(AccountRegisterResult.AccountExist);
            }

            if (await _validateAccount.CheckEmailExist(accountDto.Email))
            {
                return(AccountRegisterResult.EmailExist);
            }

            var randomPassword = GenerateToken.RandomString();
            var result         = await _userManager.CreateAsync(account, randomPassword);

            if (!result.Succeeded)
            {
                return(AccountRegisterResult.Failed);
            }

            var code = await _userManager.GenerateEmailConfirmationTokenAsync(account);

            var callbackUrl = _urlHelperFactory.GetUrlHelper(_actionAccessor.ActionContext)
                              .Action("ConfirmEmail", "Account", new { userId = account.Id, code },
                                      _httpContextAccessor.HttpContext.Request.Scheme);

            return(new RegisterViewModel()
            {
                User = account,
                Code = code,
                CallbackUrl = callbackUrl,
                RandomPassword = randomPassword
            });
        }