示例#1
0
        private void TryToLogIn()
        {
            ColorEngine.Yellow();
            Console.WriteLine();
            Console.WriteLine(new string('*', 10) + "Login:"******"This account already exists.");
                    Again(TryToLogIn);
                }
                else
                {
                    ColorEngine.Yellow();
                    Console.Write($"Welcome {CurrentUserAccount.Name}...");
                    Console.WriteLine("\tLet's start to play");
                    Console.WriteLine();
                }
            }
            else
            {
                Again(TryToLogIn);
            }
        }
示例#2
0
        public async Task <ResponseDto <int> > UpdateUser(ClaimsPrincipal loggedInUser, AddUserDto userToUpdate)
        {
            var userFromDb = await _usersRepository.GetUserByLogin(userToUpdate.Login);

            ResponseDto <int> response = UsersValidator.ValidateUpdateUser(loggedInUser, userToUpdate, userFromDb);

            if (response.HasErrors)
            {
                return(response);
            }

            var mappedUser = Mapper.Map <User>(userToUpdate);

            mappedUser.Id = userFromDb.Id;
            if (!userFromDb.Password.IsEqualTo(userToUpdate.Password.GenerateSaltedHash(userFromDb.Salt)))
            {
                mappedUser.Salt     = SaltCreator.CreateSalt();
                mappedUser.Password = userToUpdate.Password.GenerateSaltedHash(mappedUser.Salt);
            }

            var result = await _usersRepository.UpdateUser(mappedUser);

            response.Value = result;

            return(response);
        }
示例#3
0
        private void TryToLogUp()
        {
            ColorEngine.Yellow();
            Console.WriteLine();
            Console.WriteLine(new string('*', 10) + "Create account:" + new string('*', 10));

            CurrentUserAccount = GetAccountWithData();
            Validator          = new UsersValidator(CurrentUserAccount);

            if (Validator.IsValid())
            {
                bool ifCreationIsSuccessfully = DataBase.CreateNewUserAccount(CurrentUserAccount);
                if (ifCreationIsSuccessfully)
                {
                    ColorEngine.Yellow();
                    Console.Write($"Welcome {CurrentUserAccount.Name}...");
                    Console.WriteLine("\tLet's start to play");
                    Console.WriteLine();
                }
                else
                {
                    ColorEngine.Red();
                    Console.WriteLine("This account already exists.");
                    Again(TryToLogUp);
                }
            }
            else
            {
                Again(TryToLogUp);
            }
        }
        public IActionResult Register(UsersValidator userV)
        {
            Users newUser = new Users();

            newUser.Username = userV.Username;
            newUser.Email    = userV.Email;
            newUser.Password = userV.Password;

            if (ModelState.IsValid)
            {
                newUser.created_at = DateTime.Now;
                newUser.updated_at = DateTime.Now;
                newUser.Employment = null;
                newUser.Education  = null;
                newUser.Experience = null;
                newUser.Bio        = null;
                PasswordHasher <Users> Hasher = new PasswordHasher <Users>();
                newUser.Password = Hasher.HashPassword(newUser, newUser.Password);
                _context.Add(newUser);
                _context.SaveChanges();
                HttpContext.Session.SetInt32("user_id", newUser.usersId);
                return(RedirectToAction("Dashboard"));
            }
            else
            {
                return(View("Index"));
            }
        }
示例#5
0
        /// <summary>
        ///异步验证
        /// </summary>
        public static async Task DoValidationAsync(IUsersRespository usersRespository, Users users, string validatorType)
        {
            var usersValidator    = new UsersValidator(usersRespository);
            var validatorReresult = await usersValidator.DoValidateAsync(users, validatorType);

            if (!validatorReresult.IsValid)
            {
                throw new DomainException(validatorReresult);
            }
        }
示例#6
0
        public async Task <ResponseDto <bool> > ChangeRole(int id, string role)
        {
            var userFromDb = await _usersRepository.GetUserById(id);

            ResponseDto <bool> response = UsersValidator.ValidateChangeRole(userFromDb, role);

            if (response.HasErrors)
            {
                return(response);
            }

            response.Value = await _usersRepository.ChangeRole(id, role);

            return(response);
        }
示例#7
0
        public async Task <ResponseDto <bool> > DeleteUser(ClaimsPrincipal userIdentity, int id)
        {
            var userFromDb = await _usersRepository.GetUserById(id);

            ResponseDto <bool> response = UsersValidator.ValidateDeleteUser(userIdentity, userFromDb);

            if (response.HasErrors)
            {
                return(response);
            }
            var result = await _usersRepository.DeleteUser(id);

            response.Value = result;
            return(response);
        }
示例#8
0
        public async Task <ResponseDto <GetUserDto> > GetUserById(int id)
        {
            var userFromDb = await _usersRepository.GetUserById(id);

            ResponseDto <GetUserDto> response = UsersValidator.ValidateGetUserById(userFromDb);

            if (response.HasErrors)
            {
                return(response);
            }

            var mappedUser = Mapper.Map <GetUserDto>(userFromDb);

            response.Value = mappedUser;
            return(response);
        }
示例#9
0
        public async Task <ResponseDto <int> > ChangePassword(ClaimsPrincipal userIdentity, ChangePasswordDto changePasswordDto)
        {
            var userFromDb = await _usersRepository.GetUserByLogin(userIdentity.Identity.Name);

            ResponseDto <int> response = UsersValidator.ValidateChangePassword(userFromDb, changePasswordDto);

            if (response.HasErrors)
            {
                return(response);
            }

            userFromDb.Salt     = SaltCreator.CreateSalt();
            userFromDb.Password = changePasswordDto.NewPassword.GenerateSaltedHash(userFromDb.Salt);
            var result = await _usersRepository.UpdateUser(userFromDb);

            response.Value = result;
            return(response);
        }
        public IActionResult EditProfile(UsersValidator updateUser, int edituserEmp)
        {
            var allUsers = _context.users.SingleOrDefault(name => name.usersId == edituserEmp);

            ViewBag.user = allUsers;

            Users RetrievedUser = _context.users.SingleOrDefault(user => user.usersId == edituserEmp);

            ViewBag.grabUser = RetrievedUser;

            RetrievedUser.Employment = updateUser.Employment;
            RetrievedUser.Education  = updateUser.Education;
            RetrievedUser.Bio        = updateUser.Bio;
            RetrievedUser.Experience = updateUser.Experience;
            RetrievedUser.updated_at = DateTime.Now;
            _context.SaveChanges();
            return(RedirectToAction("Profile", new { id = edituserEmp }));
        }
示例#11
0
        /// <summary>
        ///异步验证
        /// </summary>
        public static async Task DoValidationAsync(IUsersRespository usersRespository, IEnumerable <Users> userss, string validatorType)
        {
            var usersValidator  = new UsersValidator(usersRespository);
            var domainException = new DomainException();

            foreach (var users in userss)
            {
                var validatorReresult = await usersValidator.DoValidateAsync(users, validatorType);

                if (!validatorReresult.IsValid)
                {
                    domainException.AddErrors(validatorReresult);
                }
            }

            if (domainException.ValidationErrors.ErrorItems.Any())
            {
                throw domainException;
            }
        }
示例#12
0
        public async Task <ResponseDto <int> > AddUser(AddUserDto userToAdd)
        {
            var userFromDb = await _usersRepository.GetUserByLogin(userToAdd.Login);

            var response = UsersValidator.ValidateAddUser(userToAdd, userFromDb);

            if (response.HasErrors)
            {
                return(response);
            }

            var userToDb = Mapper.Map <User>(userToAdd);

            userToDb.Salt     = SaltCreator.CreateSalt();
            userToDb.Password = userToAdd.Password.GenerateSaltedHash(userToDb.Salt);
            var result = await _usersRepository.AddUser(userToDb);

            response.Value = result;

            return(response);
        }
示例#13
0
        public async Task <ResponseDto <bool> > ResetPassword(string mail)
        {
            var userFromDb = await _usersRepository.GetUserByMail(mail);

            var response = UsersValidator.ValidateResetPassword(userFromDb, mail);

            if (response.HasErrors)
            {
                return(response);
            }

            var newPassword = CreateRandomPassword(10);

            userFromDb.Salt     = SaltCreator.CreateSalt();
            userFromDb.Password = newPassword.GenerateSaltedHash(userFromDb.Salt);
            var result = await _usersRepository.UpdateUser(userFromDb);

            await MailHelper.ResetPasswordMail(_appSettings.Value, mail, newPassword);

            response.Value = true;
            return(response);
        }
示例#14
0
        public async Task <ResponseDto <LoggedInUserDto> > Authenticate(LoginUserDto loginUserDto)
        {
            var user = await _usersRepository.GetUserByLogin(loginUserDto.Login);

            ResponseDto <LoggedInUserDto> response = UsersValidator.ValidateAuthenticate(user, loginUserDto);

            if (response.HasErrors)
            {
                return(response);
            }

            var tokenHandler = new JwtSecurityTokenHandler();
            var key          = Encoding.ASCII.GetBytes(_appSettings.Value.Secret);

            var subject = new ClaimsIdentity(
                new[] { new Claim(ClaimTypes.Name, user.Login), new Claim(ClaimTypes.Role, user.Role) });

            var signingCredentials = new SigningCredentials(
                new SymmetricSecurityKey(key),
                SecurityAlgorithms.HmacSha256Signature);

            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject            = subject,
                Expires            = DateTime.UtcNow.AddHours(1),
                SigningCredentials = signingCredentials
            };
            var token = tokenHandler.CreateToken(tokenDescriptor);

            response.Value = new LoggedInUserDto()
            {
                Id    = user.Id,
                Login = user.Login,
                Token = tokenHandler.WriteToken(token)
            };
            return(response);
        }
示例#15
0
        public ActionResult Login(Users model)
        {
            var validator = new UsersValidator().Validate(model);

            if (validator.IsValid)
            {
                var result = _uow.GetRepo <Users>().Where(x => x.Email == model.Email && x.Password == model.Password).FirstOrDefault();
                if (result != null)
                {
                    FormsAuthentication.SetAuthCookie(result.Email, false);
                    return(Redirect("/Dashboard"));
                }
                else
                {
                    ViewBag.msg = "Böyle bir kullanıcı mevcut değildir.";
                    return(View());
                }
            }
            else
            {
                validator.Errors.ToList().ForEach(x => ModelState.AddModelError(x.PropertyName, x.ErrorMessage));
            }
            return(View());
        }