public async Task <ApplicationResponse <LoginResponseDto> > Authenticate(LoginRequestDto authenticateRequest) { var userByMail = await _userRepository.GetAsync(x => x.EMail == authenticateRequest.EMail); if (userByMail is null) { return(new ApplicationResponse <LoginResponseDto>(ResponseState.Error, ResponseMessage.Error.UserNotFound)); } var hashPassword = SecurityHelper.HashPassword(authenticateRequest.Password, userByMail.PasswordSalt); var user = await _userRepository.GetAsync(x => x.EMail == authenticateRequest.EMail && x.Password == hashPassword); if (user is null) { return(new ApplicationResponse <LoginResponseDto>(ResponseState.Error, ResponseMessage.Error.UserNotFound)); } var claims = new List <Claim> { new("id", user.Id), new("email", user.EMail), }; var jwtResult = _jwtAuthManager.GenerateTokens(user.EMail, claims.ToArray()); await _tokenManager.AssignToken(jwtResult.AccessToken, jwtResult.RefreshToken); return(new ApplicationResponse <LoginResponseDto>(new LoginResponseDto { Id = user.Id, Name = user.Name, Surname = user.Surname, Mail = user.EMail, Company = user.Company?.Name, AccessToken = jwtResult.AccessToken, })); }