コード例 #1
0
        private static void CopyToApplicationUser(this UserProfileViewModel model, AppUser user)
        {
            var dateArr   = model.BirthDateToUpdate.Split('-');
            var birthDate = new DateTime(Int32.Parse(dateArr[2]), Int32.Parse(dateArr[0]), Int32.Parse(dateArr[1]));

            if (DefaultPictureNameHelper.IsPictureDefault(model.ImgUrl))
            {
                user.ProfileImage = DefaultPictureNameHelper.GetDefaultPictureName(model.Gender);
            }

            user.FirstName    = model.FirstName;
            user.LastName     = model.LastName;
            user.BirthDate    = birthDate;
            user.Gender       = model.Gender;
            user.ProfileImage = model.ImgUrl;
        }
コード例 #2
0
        public async Task <AccountDto> RegisterAsync(RegisterUserViewModel model, IUrlHelper url)
        {
            var profileImage = DefaultPictureNameHelper.GetDefaultPictureName(model.Gender);

            var newUser = new AppUser
            {
                UserName           = model.Email,
                Email              = model.Email,
                FirstName          = model.Firstname,
                LastName           = model.LastName,
                BirthDate          = new DateTime(model.Year, model.Day, int.Parse(model.Month)),
                Gender             = model.Gender,
                RegistrationDate   = DateTime.Now,
                ProfileImage       = profileImage,
                TransactionPercent = 3,
                ShopsAllowed       = 10,
                UsingTariff        = false
            };

            var creationResult = await _userManager.CreateAsync(newUser, model.Password);

            if (creationResult.Succeeded)
            {
                await _userManager.AddToRoleAsync(newUser, DefaultIdentity.RoleUser);

                var userForLog = await _userManager.FindByEmailAsync(newUser.Email);

                _logger.LogInformation("UserName: {0} | UserId: {1} | Request: {2} | Message: {3}",
                                       userForLog.UserName,
                                       userForLog.Id,
                                       _httpContextAccessor.HttpContext.Request.GetRawTarget(),
                                       "Successfully registered in system.");

                var code = await _userManager.GenerateEmailConfirmationTokenAsync(newUser);

                var callbackUrl = url.Action(
                    "ConfirmEmail",
                    "Account",
                    new { userId = newUser.Id, token = code },
                    protocol: _httpContextAccessor.HttpContext.Request.Scheme);

                var sendEmailConfirmationResponse = await SendMailAsync(newUser, "Email confirmation", "EmailConfirmationLink", "txt", "Interpolation", "callbackUrl", callbackUrl);

                if (sendEmailConfirmationResponse)
                {
                    await _signInManager.SignInAsync(newUser, false);

                    return(new AccountDto {
                        RedirectToAction = RedirectToAction("EmailConfirmation", "UserProfile")
                    });
                }

                await _userManager.DeleteAsync(newUser);

                return(new AccountDto {
                    ReturnToView = View("SomethingWentWrong", "link sending")
                });
            }

            _logger.LogWarning("UserName: {0} | UserId: {1} | Request: {2} | Message: {3}",
                               "Null",
                               "Null",
                               _httpContextAccessor.HttpContext.Request.GetRawTarget(),
                               string.Join("", creationResult.Errors.Select(x => "\n" + x.Description)));

            foreach (var error in creationResult.Errors)
            {
                ModelState.AddModelError("", error.Description);
            }

            return(new AccountDto {
                ReturnToView = View(model)
            });
        }