예제 #1
0
        public async Task <IResponse <User> > Authenticate(long mobileNumber, string password)
        {
            var user = await _userRepo.FirstOrDefaultAsync(conditions : x => x.MobileNumber == mobileNumber, includeProperties : null);

            if (user == null)
            {
                return new Response <User> {
                           Message = ServiceMessage.InvalidUsernameOrPassword
                }
            }
            ;

            if (!user.IsActive)
            {
                return new Response <User> {
                           Message = ServiceMessage.AccountIsBlocked
                }
            }
            ;

            var hashedPassword = HashGenerator.Hash(password);

            if (user.Password != hashedPassword)
            {
                FileLoger.Message($"UserService/Authenticate-> Invalid Password Login ! Username:{mobileNumber} Password:{password}");

                return(new Response <User> {
                    Message = ServiceMessage.InvalidUsernameOrPassword
                });
            }
            //if (user.NewPassword == hashedPassword)
            //{
            //    user.Password = user.NewPassword;
            //    user.NewPassword = null;
            //}
            user.LastLoginDateMi = DateTime.Now;
            user.LastLoginDateSh = PersianDateTime.Now.ToString(PersianDateTimeFormat.Date);
            _userRepo.Update(user);
            var saveResult = await _appUow.ElkSaveChangesAsync();

            return(new Response <User> {
                IsSuccessful = saveResult.IsSuccessful, Message = saveResult.Message, Result = user
            });
        }