コード例 #1
0
        public SaveResult <UserEntryModel> Save(UpdatePasswordDTO updatePasswordDTO, DateTime dateStamp)
        {
            var passwordHasher = new MD5PasswordHasher();
            var user           = Db.tblM_User.Find(User.User_PK);

            ModelValidationResult validationResult = validator.Validate(updatePasswordDTO);
            bool           success = false;
            UserEntryModel model   = null;

            if (validationResult.IsValid)
            {
                var hashedCurrentPassword = passwordHasher.Hash(updatePasswordDTO.CurrentPassword);
                if (hashedCurrentPassword != user.Password)
                {
                    throw new Kairos.KairosException("Wrong current password.");
                }

                var hashedNewPassword = passwordHasher.Hash(updatePasswordDTO.NewPassword);

                user.Password = hashedNewPassword;
                Db.SaveChanges();
            }

            return(new SaveResult <UserEntryModel>
            {
                Success = success,
                Message = validationResult.IsValid ? "Password has been changed." : "Validation error occured.",
                Model = model,
                ValidationResult = validationResult
            });
        }
コード例 #2
0
        public SaveResult <tblM_User> Activate(UserActivationDTO userActivationDTO, DateTime dateStamp)
        {
            var passwordHasher = new MD5PasswordHasher();
            var user           = Db.tblM_User.Find(userActivationDTO.User_PK);

            var inactiveStatus = 1;

            user.Status_FK = inactiveStatus;

            Db.SaveChanges();

            return(new SaveResult <tblM_User>()
            {
                Message = $"User {user.Username} successfully activated.",
                Model = user,
                Success = true,
            });
        }
コード例 #3
0
        public LoginResult <UserDTO> GrantAccess(LoginDTO loginDTO)
        {
            var validationResult = Validate(loginDTO);

            if (!validationResult.IsValid)
            {
                return(new LoginResult <UserDTO>
                {
                    Success = false,
                    Message = "Validation error occured.",
                    Model = null,
                    ValidationResult = validationResult
                });
            }

            MD5PasswordHasher passwordHasher = new MD5PasswordHasher();
            var hashedPassword = passwordHasher.Hash(loginDTO.Password);

            var username = loginDTO.Username;

            var user = Db.tblM_User.FirstOrDefault(x => x.Username == username && x.Password == hashedPassword);

            if (user == null)
            {
                throw new Kairos.AccessException("Username or password do not match.");
            }

            var userDTO = new UserQuery(this.Db).GetUsernamePassword(username);

            return(new LoginResult <UserDTO>()
            {
                Token = Guid.NewGuid().ToString(),
                Success = true,
                Message = "Login success.",
                Model = userDTO,
                ValidationResult = validationResult
            });
        }
コード例 #4
0
        public LoginResult <UserDTO> GrantAccess(LoginDTO loginDTO)
        {
            var validationResult = Validate(loginDTO);

            if (!validationResult.IsValid)
            {
                return(new LoginResult <UserDTO>
                {
                    Success = false,
                    Message = "Validation error occured.",
                    Model = null,
                    ValidationResult = validationResult
                });
            }

            MD5PasswordHasher passwordHasher = new MD5PasswordHasher();
            var hashedPassword = passwordHasher.Hash(loginDTO.Password);

            var username = loginDTO.Username;

            //Try by username first;
            var loginBy = "username";

            var user = GetUserByUsername(username); //Db.tblM_User.FirstOrDefault(x => x.Username == username && x.Password == hashedPassword);

            //If not found, try by email
            if (user == null)
            {
                user    = GetUserByEmail(username);
                loginBy = "email";
            }

            if (user == null)
            {
                throw new Kairos.AccessException("Username or password do not match.");
            }

            if (user.Password != hashedPassword)
            {
                throw new Kairos.AccessException("Username or password do not match.");
            }
            UserDTO userDTO;

            if (loginBy == "username")
            {
                userDTO = new UserQuery(this.Db).GetByUsername(username);
            }
            else
            {
                userDTO = new UserQuery(this.Db).GetByEmail(username);
            }

            var treeMenu = new MenuGenerator(Db).GenerateMenus(user.User_PK);


            return(new LoginResult <UserDTO>()
            {
                Token = Guid.NewGuid().ToString(),
                Success = true,
                Message = "Login success.",
                Model = userDTO,
                ValidationResult = validationResult,
                TreeMenu = treeMenu
            });
        }