Пример #1
0
        public UsersDto GetSingle(UserLoginRequestDto request)
        {
            try
            {
                var ReturnData  = new UserLoginResponseDto();
                var EncryptPass = PasswordHelper.EncryptData(request.Password);

                #region DynamicQuerryParameters
                var list = DynamicQuerryParameters.Create();
                list.Add(DynamicQuerryParameters.AddParameter("UserName", request.UserName, DbType.String));
                list.Add(DynamicQuerryParameters.AddParameter("Password", EncryptPass, DbType.String));
                list.Add(DynamicQuerryParameters.AddParameter("ActivationStatus", (int)ActivationStatusType.Active, DbType.Int16));
                #endregion

                var querry = QueryGenerator.GenerateQuery(list, QueryGenerator.tableName <UserEntity>());
                var result = Db.GetSingleData <UserEntity>(querry);
                if (result != null)
                {
                    ReturnData          = result.ConvertTo <UserLoginResponseDto>();
                    ReturnData.TokenKey = Authentication.CreateTokenAuthentication(result.Id);
                }
                return(ReturnData);
            }
            catch (KnownException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                Logger.AddLog(LogTypeEnum.Error, "UserManager.GetSingle", null, ex.Message, request.ToJson(), ex);
                throw new KnownException(ErrorTypeEnum.UnexpectedExeption, ex.Message, ex);
            }
        }
        public async Task <AuthenticationResultDto> Login([FromBody] UserLoginRequestDto loginForm)
        {
            var tokenRequestResult = await _authenticationService.LoginAsync(loginForm.Username, loginForm.Password);

            _logger.LogInformation($"User {loginForm.Username} logged in.");
            return(_mapper.Map <AuthenticationResultDto>(tokenRequestResult));
        }
Пример #3
0
        public async Task <AuthResponse> Login(UserLoginRequestDto user)
        {
            if (await _userRepository.UserExists(user.Email))
            {
                var existingUser = await _userRepository.FindByEmail(user.Email);

                if (await _userRepository.CheckCredentials(existingUser, user.Password))
                {
                    var jwtToken = GenerateJwtToken(existingUser);

                    return(new AuthResponse()
                    {
                        Result = true,
                        Token = jwtToken
                    });
                }


                throw new HandlerException(
                          HttpStatusCode.Unauthorized,
                          new List <string>()
                {
                    "El usuario/password son incorrectos."
                }
                          );
            }

            throw new HandlerException(
                      HttpStatusCode.NotFound,
                      new List <string>()
            {
                "El usuario no se encuentra en el sistema."
            }
                      );
        }
        public ActionResult <string> Post([FromBody] UserLoginRequestDto request)
        {
            if (request.UserName != "admin" || request.Password != "1234")
            {
                return(Unauthorized());
            }

            return(_authenticationService.GetToken(request.UserName, request.Password));
        }
Пример #5
0
 public async Task <ActionResult> Login([FromBody] UserLoginRequestDto request)
 {
     try
     {
         return(Ok(await _userService.Login(request)));
     }
     catch (Exception e)
     {
         return(StatusCode((int)HttpStatusCode.InternalServerError, e.Message));
     }
 }
 public async Task <ActionResult <UserLoginResponseDto> > Login(
     [FromBody] UserLoginRequestDto requestDto,
     [FromHeader(Name = "User-Agent")] string userAgent,
     [FromHeader(Name = "X-Application-Version")]
     string appVersion
     )
 {
     requestDto.UserAgent  = userAgent;
     requestDto.AppVersion = appVersion;
     return(await ProcessResultAsync(() => _authenticationService.Login(requestDto)));
 }
Пример #7
0
        public async Task <ActionResult> Login([FromBody] UserLoginRequestDto model)
        {
            if (ModelState.IsValid)
            {
                var user = await _userManager.FindByNameAsync(model.UserName);

                if (user != null)
                {
                    var result = await _signInManager.PasswordSignInAsync(model.UserName, model.Password, false, false);

                    if (result.Succeeded)
                    {
                        // create token
                        var claims = new[]
                        {
                            new Claim(JwtRegisteredClaimNames.Sub, model.UserName),
                            new Claim(JwtRegisteredClaimNames.UniqueName, user.UserName),
                            new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())
                        };

                        var key         = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["JwtSettings:Secret"]));
                        var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

                        var token = new JwtSecurityToken(
                            _configuration["JwtSettings:Issuer"],
                            _configuration["JwtSettings:Audience"],
                            claims,
                            expires: DateTime.UtcNow.AddDays(1),
                            signingCredentials: credentials
                            );

                        var response = new UserLoginResponseDto
                        {
                            User = new UserDto
                            {
                                UserName = user.UserName
                            },
                            Token           = new JwtSecurityTokenHandler().WriteToken(token),
                            TokenExpiration = token.ValidTo
                        };

                        return(Created("", response));
                    }
                }

                ModelState.AddModelError("", "Failed to login");
                return(BadRequest(ModelState));
            }

            return(BadRequest(ModelState));
        }
Пример #8
0
        public async void LoginUserFailEmail()
        {
            // Arrange
            UserLoginRequestDto userLogin = new UserLoginRequestDto()
            {
                Email    = "*****@*****.**",
                Password = "******"
            };

            // Act

            //Assert
            await Assert.ThrowsAsync <HandlerException>(() => _authService.Login(userLogin));
        }
Пример #9
0
        public async Task <JsonResult> LoginAsync([FromBody] UserLoginRequestDto userDto)
        {
            if (!userDto.IsGuest)
            {
                var(token, error) = await _loginService.LoginAsRegisteredUserAsync(userDto);

                return(error == null?Json(token)
                           : Json(new { Error = error }));
            }
            else
            {
                return(Json(await _loginService.LoginAsGuestAsync()));
            }
        }
Пример #10
0
 public virtual ActionResponseDto LoginAdmin(UserLoginRequestDto request)
 {
     // 检查验证码
     if (!_captchaManager.Check("AdminLogin", request.Captcha))
     {
         throw new BadRequestException("Incorrect captcha");
     }
     // 登录用户
     _adminManager.Login(
         request.Tenant,
         request.Username,
         request.Password,
         request.RememberLogin ?? true);
     return(ActionResponseDto.CreateSuccess());
 }
Пример #11
0
        public async void LoginUserSuccess()
        {
            // Arrange
            UserLoginRequestDto userLogin = new UserLoginRequestDto()
            {
                Email    = "*****@*****.**",
                Password = "******"
            };

            // Act
            AuthResponse user = await _authService.Login(userLogin);

            //Assert
            Assert.NotEmpty(user.Token);
        }
        public async Task <UserLoginResponseDto> Login(UserLoginRequestDto requestDto)
        {
            var user = await _userRepository.GetByEmail(requestDto.Email);

            if (user == null)
            {
                return(new UserLoginResponseDto
                {
                    Error = ErrorCodes.IncorrectEmailOrPassword,
                    ErrorField = new List <string> {
                        nameof(requestDto.Email), nameof(requestDto.Email)
                    }
                });
            }

            if (_cryptoHelper.GetHash(requestDto.Password) != user.Password)
            {
                return(new UserLoginResponseDto
                {
                    Error = ErrorCodes.IncorrectEmailOrPassword,
                    ErrorField = new List <string> {
                        nameof(requestDto.Email), nameof(requestDto.Email)
                    }
                });
            }

            var sessionId = Guid.NewGuid();
            var token     = _tokenService.GenerateToken(user.Id, sessionId, _secretKey);

            await _tokenRepository.Create(new TokenModel
            {
                Id         = sessionId,
                UserAgent  = requestDto.UserAgent,
                Token      = token,
                UserId     = user.Id,
                AppVersion = requestDto.AppVersion
            },
                                          user.Id.Value
                                          );

            return(new UserLoginResponseDto
            {
                Id = user.Id,
                AuthToken = token
            });
        }
Пример #13
0
        /// <summary>
        /// User login operation
        /// </summary>
        /// <param name="userForLoginDto"></param>
        /// <returns></returns>
        //[PerformanceAspect(5)]
        public IDataResult <User> Login(UserLoginRequestDto userForLoginDto)
        {
            ValidationTool.Validate(new LoginValidation(), userForLoginDto);

            var userToCheck = _userRepository.GetUserByEmail(userForLoginDto.Email);

            if (userToCheck == null)
            {
                return(new ErrorDataResult <User>(ErrorMessages.UserNotFound));
            }

            if (!HashingHelper.VerifyPasswordHash(userForLoginDto.Password, userToCheck.PasswordHash, userToCheck.PasswordSalt))
            {
                return(new ErrorDataResult <User>(ErrorMessages.PassError));
            }

            return(new SuccessDataResult <User>(userToCheck, SuccessMessages.SuccessfulLogin));
        }
Пример #14
0
        public IActionResult Login(UserLoginRequestDto request)
        {
            var userToLogin = _authService.Login(request);

            if (!userToLogin.Success)
            {
                return(BadRequest(userToLogin.Message));
            }

            var result = _authService.CreateAccessToken(userToLogin.Data);

            if (!result.Success)
            {
                return(BadRequest(result.Message));
            }

            return(Ok(result.Data));
        }
        public IActionResult Login(UserLoginRequestDto userLoginRequestDto)
        {
            var validationResult = _userLoginRequestValidator.Validate(userLoginRequestDto);

            if (validationResult.Errors.Any())
            {
                return(BadRequest(validationResult));
            }

            var responseDto = _userProcessor.Login(userLoginRequestDto);

            if (responseDto == null)
            {
                return(Unauthorized());
            }

            return(Ok(responseDto));
        }
        public async Task <ActionResult> Login([FromBody] UserLoginRequestDto requestDto)
        {
            if (User.Identity.IsAuthenticated)
            {
                return(Forbid());
            }

            requestDto.UserAgent = Request.Headers["User-Agent"].ToString();
            var result = await _authenticateService.Login(requestDto);

            if (result.Error != null)
            {
                var error = result.Error ?? ErrorCodes.NotFound;
                BadRequest(error, result.ErrorField);
            }

            return(Ok(result));
        }
Пример #17
0
        public async Task <UserLoginResponseDto> Login(UserLoginRequestDto login)
        {
            try
            {
                var validate = new UserLoginValidator().Validate(login);

                if (!validate.IsValid)
                {
                    return(new UserLoginResponseDto()
                    {
                        Sucess = false,
                        Message = validate.Errors[0].ErrorMessage
                    });
                }

                var result = _mapper.Map <UserEntityDto>((await _repository.LoginAsync(_mapper.Map <User>(login))));

                if (result != null)
                {
                    return(new UserLoginResponseDto()
                    {
                        Sucess = true,
                        Message = "Login realizado com sucesso",
                        User = result
                    });
                }
                else
                {
                    return(new UserLoginResponseDto()
                    {
                        Sucess = false,
                        Message = "Usuário ou senha incorreto"
                    });
                }
            }
            catch (Exception e)
            {
                return(new UserLoginResponseDto()
                {
                    Sucess = false,
                    Message = "Ocorreu um erro, tente novamente " + e.Message
                });
            }
        }
Пример #18
0
        public async Task <IActionResult> Login([FromBody] UserLoginRequestDto loginRequestDto,
                                                CancellationToken cancellationToken = default(CancellationToken))
        {
            var validateResult = _userService.CredentialsValid(loginRequestDto);

            if (validateResult)
            {
                var token = await _tokenService.CreateToken(_mapper.Map <TokenCreateDto>(loginRequestDto),
                                                            cancellationToken);

                if (token != null)
                {
                    return(Ok(new ApiOkResponse(token)));
                }
            }

            var errorMessage = ApiResponse.CreateErrorMessage(ErrorMessages.WrongCredentials, ErrorMessages.DefaultKey);

            return(BadRequest(new ApiResponse(StatusCodes.Status400BadRequest, errorMessage)));
        }
Пример #19
0
        /// <summary>
        /// Logs the specified user in by authenticating the provided credentials
        /// (POST request to the Glitched Epistle Web API).
        /// If authentication is successful, a valid JWT <c>string</c> is returned along with the user's keypair.
        /// That's needed for subsequent requests.
        /// </summary>
        /// <param name="paramsDto">HTTP Request parameters wrapped into a DTO instance.</param>
        /// <returns><see cref="UserLoginSuccessResponseDto"/> if auth was successful; <c>null</c> otherwise.</returns>
        public async Task <UserLoginSuccessResponseDto> Login(UserLoginRequestDto paramsDto)
        {
            var request = new RestRequest(
                method: Method.Post,
                resource: new Uri("users/login", UriKind.Relative)
                );

            request.AddStringBody(JsonSerializer.Serialize(paramsDto), "application/json");

            RestResponse response = await restClient.ExecuteAsync(request).ConfigureAwait(false);

            try
            {
                var r = JsonSerializer.Deserialize <UserLoginSuccessResponseDto>(response.Content);
                return(response.StatusCode == HttpStatusCode.OK ? r : null);
            }
            catch
            {
                return(null);
            }
        }
Пример #20
0
        public UserLoginResponseDto Login(UserLoginRequestDto userLoginRequestDto)
        {
            var foundUser = _userRepository.FindUser(userLoginRequestDto.Email);

            if (foundUser == null)
            {
                return(null);
            }

            if (!_hashingService.VerifyHashedPassword(foundUser.Password, userLoginRequestDto.Password))
            {
                // Maybe return a different response here?
                return(null);
            }

            var userResponse = _mapper.Map <UserResponseDto>(foundUser);

            var token = _tokenProvider.GenerateToken(userResponse);

            return(_mapper.Map <UserLoginResponseDto>((token, userResponse)));
        }
        public IHttpActionResult Login(UserLoginRequestDto req)
        {
            UserLoginResponseDto response;
            var user = context.User.Where(x => (x.Email == req.Email || x.Username == req.Email) && x.Password == req.Password).FirstOrDefault();

            if (user != null)
            {
                response = new UserLoginResponseDto()
                {
                    Data         = mapper.Map <User, UserLoginDto>(user),
                    ErrorMessage = null
                };
            }
            else
            {
                response = new UserLoginResponseDto()
                {
                    Data         = null,
                    ErrorMessage = "incorrect password or email "
                };
            }
            return(Json(response));
        }
Пример #22
0
        /// <summary>
        /// User auth
        /// </summary>
        /// <param name="requestDto" class="UserLoginResponseDto">UserLoginResponseDto</param>
        /// <returns></returns>
        public async Task <Result <UserLoginResponseDto> > Login(UserLoginRequestDto requestDto)
        {
            var user = await _userRepository.GetByEmail(requestDto.Email);

            if (user == null)
            {
                return(Result <UserLoginResponseDto> .FromIError(new ApiError(ErrorCodes.IncorrectEmailOrPassword)));
            }

            if (_cryptoHelper.GetHash(requestDto.Password) != user.Password)
            {
                return(Result <UserLoginResponseDto> .FromIError(new ApiError(ErrorCodes.IncorrectEmailOrPassword)));
            }

            var sessionId = Guid.NewGuid();
            var token     = _tokenService.GenerateToken(user.Id, sessionId, _secretKey);

            await _tokenRepository.Create(new TokenModel
            {
                Id         = sessionId,
                UserAgent  = requestDto.UserAgent,
                Token      = token,
                UserId     = user.Id,
                AppVersion = requestDto.AppVersion,
                CreatorId  = user.Id
            }
                                          );

            return(new Result <UserLoginResponseDto>(
                       new UserLoginResponseDto
            {
                Id = user.Id,
                AuthToken = token
            }
                       ));
        }
Пример #23
0
        public bool CredentialsValid(UserLoginRequestDto userLoginRequestDto)
        {
            var user = GetUser(userLoginRequestDto.Email);

            return(user != null && VerifyPassword(user, userLoginRequestDto.Password));
        }
Пример #24
0
 public TokenAuthenticateCommand(UserLoginRequestDto requesDto)
 {
     EmailAddress = requesDto.Username.Trim();
     Password     = requesDto.Password.Trim();
 }
Пример #25
0
        /// <summary>
        /// 作为注册用户登录
        /// </summary>
        /// <param name="userDto">用户信息</param>
        /// <returns>异步获取Token的任务,发生错误时返回错误信息</returns>
        public async Task <(AccessTokenResponseDto, Dictionary <string, string> error)> LoginAsRegisteredUserAsync(UserLoginRequestDto userDto)
        {
            User user = await _dbContext.User
                        .FirstOrDefaultAsync(u => u.Username == userDto.Username);

            if (user != null &&
                ValidatePassword(userDto.Password, user.Salt, user.PasswordHash))
            {
                AccessTokenResponseDto tokenDto = new AccessTokenResponseDto
                {
                    AccessToken  = await _tokenAuthService.GenerateAccessTokenAsync(user),
                    RefreshToken = await _tokenAuthService.GenerateRefreshTokenAsync(user)
                };
                return(tokenDto, null);
            }
            else
            {
                // 用户名或密码错误
                var error = new Dictionary <string, string>
                {
                    ["username"] = _msg.GetMessage("E001", "用户名或密码")
                };

                return(null, error);
            }
        }
Пример #26
0
 public async Task <IActionResult> Authorize([FromBody] UserLoginRequestDto request)
 {
     return(Ok(await _mediator.Send(new TokenAuthenticateCommand(request))));
 }
Пример #27
0
 public async Task <IActionResult> Login([FromBody] UserLoginRequestDto user)
 {
     return(Ok(await _authService.Login(user)));
 }
Пример #28
0
        public async Task <IActionResult> Login([FromBody] UserLoginRequestDto loginDto)
        {
            if (ModelState.IsValid)
            {
                // Check email
                var existingUser = await _userManager.FindByEmailAsync(loginDto.Email);

                if (existingUser is null)
                {
                    return(BadRequest(new UserLoginResponseDto()
                    {
                        Success = false,
                        Errors = new List <string>()
                        {
                            "Invalid authentication request"
                        }
                    }));
                }

                // Check password
                var isCorrect = await _userManager.CheckPasswordAsync(existingUser, loginDto.Password);

                if (isCorrect)
                {
                    var userRoles = await _userManager.GetRolesAsync(existingUser);

                    var jwtToken = GenerateJwtToken(existingUser, userRoles);

                    return(Ok(new UserLoginResponseDto()
                    {
                        Success = true,
                        Token = jwtToken,
                        Email = loginDto.Email,
                        id = existingUser.Id.ToString()
                    }));
                }
                else
                {
                    return(BadRequest(new UserLoginResponseDto()
                    {
                        Success = false,
                        Errors = new List <string>()
                        {
                            "Invalid authentication request"
                        }
                    }));
                }
            }
            else
            {
                return(BadRequest(
                           new UserRegistrationResponseDto
                {
                    Success = false,
                    Errors = new List <string>()
                    {
                        "Invalid payload"
                    }
                }
                           ));
            }
        }