Exemple #1
0
        public async Task <ActionResult> Create(UserCreatorVM vm)
        {
            CheckPasswordAuth();

            if (!ModelState.IsValid)
            {
                return(await ViewCreateFormAsync(vm));
            }

            try
            {
                if (vm.CreatePersonalPage)
                {
                    var page = await _pages.CreateDefaultUserPageAsync(vm, User);

                    vm.PersonalPageId     = page.Id;
                    vm.CreatePersonalPage = false;
                }

                await _users.CreateAsync(vm);

                await _db.SaveChangesAsync();

                return(RedirectToSuccess("Пользователь создан"));
            }
            catch (ValidationException ex)
            {
                SetModelState(ex);
                return(await ViewCreateFormAsync(vm));
            }
        }
Exemple #2
0
        /// <summary>
        /// Displays the form for creating a new password-authorized user.
        /// </summary>
        private async Task <ActionResult> ViewCreateFormAsync(UserCreatorVM vm)
        {
            var pageItems = await GetPageItemsAsync(vm.PersonalPageId);

            ViewBag.Data = new UserEditorDataVM
            {
                IsSelf        = false,
                UserRoleItems = ViewHelper.GetEnumSelectList(vm.Role, except: new[] { UserRole.Unvalidated }),
                PageItems     = pageItems
            };

            return(View("Create", vm));
        }
Exemple #3
0
        /// <summary>
        /// Performs additional checks on the registration request.
        /// </summary>
        private async Task ValidateRegisterRequestAsync(UserCreatorVM vm)
        {
            var val = new Validator();

            if (FuzzyDate.TryParse(vm.Birthday) == null)
            {
                val.Add(nameof(vm.Birthday), "Дата рождения указана неверно.");
            }

            var emailExists = await _db.Users.AnyAsync(x => x.Email == vm.Email);

            if (emailExists)
            {
                val.Add(nameof(vm.Email), "Адрес электронной почты уже зарегистрирован.");
            }

            val.ThrowIfInvalid();
        }
Exemple #4
0
        /// <summary>
        /// Creates a new user with login-password auth.
        /// </summary>
        public async Task <AppUser> CreateAsync(UserCreatorVM vm)
        {
            ValidatePasswordForm(vm);
            await ValidateRegisterRequestAsync(vm);

            var user = _mapper.Map <AppUser>(vm);

            user.Id          = Guid.NewGuid().ToString();
            user.AuthType    = AuthType.Password;
            user.IsValidated = true;

            var createResult = await _userMgr.CreateAsync(user, vm.Password);

            if (!createResult.Succeeded)
            {
                var msgs = createResult.Errors.Select(x => new KeyValuePair <string, string>("", x.Description)).ToList();
                throw new ValidationException(msgs);
            }

            await _userMgr.AddToRoleAsync(user, vm.Role.ToString());

            return(user);
        }