예제 #1
0
        public override ValidationResult Validate(RoleViewModel viewModel)
        {
            var validationResult = new ValidationResult <RoleViewModel>();
            var permissions      = this.permissionProvider.GetAll().ToList();

            if (viewModel.Permissions.IsNullOrDefault() || viewModel.Permissions.Count == default(int))
            {
                viewModel.Permissions = new List <PermissionViewModel>();
            }

            if (string.IsNullOrWhiteSpace(viewModel.Name))
            {
                validationResult.AddError(role => role.Name,
                                          translationManager.GetTranslationLabel(LanguageId, "Dashboard:Role:NameEmpty"));
            }

            for (var i = 0; i < viewModel.Permissions.Count; i++)
            {
                if (!permissions.Any(y => y.Id == viewModel.Permissions[i].Id))
                {
                    validationResult.AddError($"Permissions[{i}].Action",
                                              translationManager.GetTranslationLabel(LanguageId, "Dashboard:Role:PermissionNotExists"));
                }
            }

            return(validationResult);
        }
예제 #2
0
        public override void Process(PasswordResetViewModel viewModel)
        {
            var user = userProvider.GetUserByEmail(viewModel.Email);

            if (user.IsNullOrDefault())
            {
                return;
            }

            var reloadedViewModel = reloader.Reload(viewModel);
            var subject           = translationManager.GetTranslationLabel(LanguageId, "Dashboard:Admin:MailSubject");

            using (var transaction = new TransactionScope(TransactionScopeOption.Required))
            {
                user.ResetToken     = RandomToken();
                user.ResetTokenDate = DateTime.Now;

                userService.AddOrUpdate(user);

                reloadedViewModel.Firstname = user.Firstname;
                reloadedViewModel.RootUrl   = GetRootUrl();
                reloadedViewModel.Token     = user.ResetToken;

                var mailHTML = CreateResetMail(reloadedViewModel).Result;

                mailQueueService.AddNew(
                    user.Email,
                    subject,
                    mailHTML);

                transaction.Complete();
            }
        }
예제 #3
0
        public IActionResult SignIn(SignInViewModel viewModel)
        {
            var result = ProcessViewModel(
                viewModel,
                async vm =>
            {
                var validationResult = new ValidationResult <SignInViewModel>();

                try
                {
                    var principal = authentication.SignIn(vm.Username, vm.Password);
                    await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal);
                }
                catch (DeactivatedException)
                {
                    validationResult.AddError(
                        x => x.Username,
                        translationManager.GetTranslationLabel(LanguageId, "Dashboard:SignIn:Deactivated"));

                    ModelState.AddValidationResult(validationResult);

                    throw;
                }
                catch (Exception)
                {
                    validationResult.AddError(
                        x => x.Username,
                        translationManager.GetTranslationLabel(LanguageId, "Dashboard:SignIn:WrongLogin"));

                    validationResult.AddError(
                        x => x.Password,
                        translationManager.GetTranslationLabel(LanguageId, "Dashboard:SignIn:WrongLogin"));

                    ModelState.AddValidationResult(validationResult);

                    throw;
                }
            },
                () => RedirectToAction("Index", "Dashboard"),
                () =>
            {
                var reloader = GetReloader <SignInViewModel>();
                return(View("SignIn", reloader.Reload(viewModel)));
            });

            return(result.Result);
        }
예제 #4
0
        public override ValidationResult Validate(PasswordResetViewModel viewModel)
        {
            var validationResult = new ValidationResult <PasswordResetViewModel>();

            if (string.IsNullOrWhiteSpace(viewModel.Email))
            {
                validationResult.AddError(
                    m => m.Email,
                    translationManager.GetTranslationLabel(LanguageId, "Dashboard:Admin:EmailEmpty"));
            }

            if (!ValidEmail(viewModel.Email))
            {
                validationResult.AddError(
                    m => m.Email,
                    translationManager.GetTranslationLabel(LanguageId, "Dashboard:Admin:EmailNotValid"));
            }

            return(validationResult);
        }
예제 #5
0
        public override ValidationResult Validate(SignInViewModel viewModel)
        {
            var validationResult = new ValidationResult <SignInViewModel>();

            if (string.IsNullOrWhiteSpace(viewModel.Username))
            {
                validationResult.AddError(
                    m => m.Username,
                    translationManager.GetTranslationLabel("Admin", "SignIn", "EmailEmpty"));
            }

            if (string.IsNullOrWhiteSpace(viewModel.Password))
            {
                validationResult.AddError(
                    m => m.Password,
                    translationManager.GetTranslationLabel("Admin", "SignIn", "PasswordEmpty"));
            }

            return(validationResult);
        }
예제 #6
0
        public IActionResult Delete(int id)
        {
            var role = roleProvider.GetEntity(x => x.Id == id);

            if (role.IsNullOrDefault())
            {
                return(RedirectToAction("List", "Role"));
            }

            try
            {
                var rolePermissions = rolePermissionProvider.Where(x => x.Role_Id == role.Id);
                var userRoles       = userRoleProvider.Where(x => x.Role_Id == role.Id);

                using (var transaction = new TransactionScope(TransactionScopeOption.Required))
                {
                    rolePermissionService.DeleteRange(rolePermissions);
                    userRoleService.DeleteRange(userRoles);
                    roleService.Delete(role);

                    transaction.Complete();
                }

                return(RedirectToAction("List", "Role"));
            }
            catch (Exception)
            {
                var validationResult = new ValidationResult <UserViewModel>();
                var loader           = GetLoader <RoleViewModel, int>();
                var viewModel        = loader.Load(role.Id);

                validationResult.AddError(
                    m => m.Id,
                    translationManager.GetTranslationLabel(LanguageId, "Dashboard:Role:NotDeleted"));

                ModelState.Clear();
                ModelState.AddValidationResult(validationResult);

                return(View("Details", viewModel));
            }
        }
예제 #7
0
        public override ValidationResult Validate(ResetPasswordViewModel viewModel)
        {
            var validationResult = new ValidationResult <ResetPasswordViewModel>();

            if (string.IsNullOrWhiteSpace(viewModel.Token))
            {
                validationResult.AddError(
                    x => x.Token,
                    translationManager.GetTranslationLabel(LanguageId, "Dashboard:Admin:EmptyToken"));
            }

            if (!string.Equals(viewModel.Password, viewModel.PasswordCheck))
            {
                validationResult.AddError(
                    x => x.Password,
                    translationManager.GetTranslationLabel(LanguageId, "Dashboard:Admin:PasswordMismatch"));
                validationResult.AddError(
                    x => x.PasswordCheck,
                    translationManager.GetTranslationLabel(LanguageId, "Dashboard:Admin:PasswordMismatch"));
            }

            if (string.IsNullOrWhiteSpace(viewModel.Password))
            {
                validationResult.AddError(
                    x => x.Password,
                    translationManager.GetTranslationLabel(LanguageId, "Dashboard:Admin:EmptyPassword"));
            }

            if (string.IsNullOrWhiteSpace(viewModel.PasswordCheck))
            {
                validationResult.AddError(
                    x => x.PasswordCheck,
                    translationManager.GetTranslationLabel(LanguageId, "Dashboard:Admin:EmptyPassword"));
            }

            if (PasswordStrengthCheck.GetPasswordStrength(viewModel.Password) != PasswordStrength.VeryStrong)
            {
                validationResult.AddError(
                    m => m.Password,
                    translationManager.GetTranslationLabel(LanguageId, "Dashboard:Admin:WeakPassword"));
            }

            return(validationResult);
        }
예제 #8
0
        public override ValidationResult Validate(UserViewModel viewModel)
        {
            var validationResult = new ValidationResult <UserViewModel>();

            if (string.IsNullOrWhiteSpace(viewModel.Firstname))
            {
                validationResult.AddError(m => m.Firstname,
                                          translationManager.GetTranslationLabel(LanguageId, "Dashboard:User:FirstnameEmpty"));
            }

            if (string.IsNullOrWhiteSpace(viewModel.Lastname))
            {
                validationResult.AddError(m => m.Lastname,
                                          translationManager.GetTranslationLabel(LanguageId, "Dashboard:User:LastnameEmpty"));
            }

            if (viewModel.Id == default(int))
            {
                if (string.IsNullOrWhiteSpace(viewModel.Email))
                {
                    validationResult.AddError(m => m.Email,
                                              translationManager.GetTranslationLabel(LanguageId, "Dashboard:User:EmailEmpty"));
                }

                var existingUser = userProvider.GetUserByEmail(viewModel.Email);

                if (!existingUser.IsNullOrDefault())
                {
                    validationResult.AddError(m => m.Email,
                                              translationManager.GetTranslationLabel(LanguageId, "Dashboard:User:EmailAlreadyExists"));
                }

                return(validationResult);
            }

            var editedUser = userProvider.GetUserById(viewModel.Id);

            if (editedUser.IsNullOrDefault())
            {
                validationResult.AddError(m => m.Email,
                                          translationManager.GetTranslationLabel(LanguageId, "Dashboard:User:UserNotFound"));

                return(validationResult);
            }

            if (Actions.Contains(Permissions.GetActionKey(Module.Dashboard, Type.User, Action.Edit)))
            {
                if (string.IsNullOrWhiteSpace(viewModel.Email))
                {
                    validationResult.AddError(m => m.Email,
                                              translationManager.GetTranslationLabel(LanguageId, "Dashboard:User:EmailEmpty"));
                }
                else if (!ValidEmail(viewModel.Email))
                {
                    validationResult.AddError(m => m.Email,
                                              translationManager.GetTranslationLabel(LanguageId, "Dashboard:User:EmailNotValid"));
                }
                else
                {
                    var existingUser = userProvider.GetUserByEmail(viewModel.Email);

                    if (!existingUser.IsNullOrDefault() && existingUser.Id != editedUser.Id)
                    {
                        validationResult.AddError(m => m.Email,
                                                  translationManager.GetTranslationLabel(LanguageId, "Dashboard:User:EmailAlreadyExists"));
                    }
                }
            }
            else
            {
                viewModel.Email = editedUser.Email;
            }

            return(validationResult);
        }