コード例 #1
0
        public IActionResult Create(EditableUserViewModel <UserWithPasswordViewModel> editableViewModel)
        {
            if (ModelState.IsValid)
            {
                var userViewModel = editableViewModel.UserViewModel as UserViewModel;


                var userModel       = m_mapper.Map <UserModel>(userViewModel);
                var applicationUser = m_mapper.Map <ApplicationUser>(userModel);

                var result = m_identityUserManager
                             .CreateAsync(applicationUser, editableViewModel.UserViewModel.Password).Result;

                if (result.Succeeded)
                {
                    var roleResult = m_identityUserManager.AddToRolesAsync(applicationUser,
                                                                           editableViewModel.SelectableRoles?.Where(x => x.IsSelected).Select(x => x.Item.Name).ToList()).Result;

                    if (roleResult.Succeeded)
                    {
                        return(RedirectToAction(nameof(View), new { id = applicationUser.Id }));
                    }

                    ModelState.AddModelError(
                        roleResult.Errors.FirstOrDefault()?.Description); //TODO translate by code
                }

                ModelState.AddModelError(
                    result.Errors.FirstOrDefault()?.Description); //TODO translate by code
            }

            var viewModel = ViewModelBuilder.BuildCreateUserViewModel(ModelState, editableViewModel.UserViewModel);

            return(View(viewModel));
        }
コード例 #2
0
        public async Task <IActionResult> Edit(int id, EditableUserViewModel <UserViewModel> editableViewModel)
        {
            var authorized = m_authorizationService.AuthorizationForUserEditAsync(User, RoleNames.Admin, id);

            if (!authorized.Result)
            {
                return(Forbid());
            }

            var userViewModel = editableViewModel.UserViewModel;


            var twoFactorCheckResult = await m_twoFactorValidator.CheckTwoFactorIsValidOrNotEnabledAsync(id, userViewModel);

            if (!twoFactorCheckResult.IsSuccessful)
            {
                ModelState.AddModelError("", twoFactorCheckResult.Message);
            }

            var userModel = m_mapper.Map <UserModel>(userViewModel);
            var appUser   = m_mapper.Map <ApplicationUser>(userModel);

            var result = m_identityUserManager.UpdateAsync(id, appUser).Result;

            if (result.Succeeded)
            {
                if (int.TryParse(User.FindFirst(JwtClaimTypes.Subject).Value, out var value) && value == id)
                {
                    await m_signInManager.ReloginUserAsync(id, false); //HACK check for persistent login
                }

                return(RedirectToAction(nameof(View), new { id }));
            }


            ModelState.AddModelError(result.Errors.FirstOrDefault()?.Description); //TODO translate by code


            var viewModel = await ViewModelBuilder.BuildEditableUserViewModelAsync(ModelState, userViewModel);

            return(View(viewModel));
        }