- Go to JwtTokenGenerator.cs
//Change JwtOptions to IOptions<JwtOptions>
public JwtTokenGenerator(IOptions<JwtOptions> jwtOptions)
{
_jwtOptions = jwtOptions.Value;
}
private readonly RoleManager<IdentityRole> _roleManager;
//Add this line
private readonly IJwtTokenGenerator _jwtTokenGenerator;
public AuthService(AppDbContext db, IJwtTokenGenerator jwtTokenGenerator,
UserManager<ApplicationUser> userManager,
RoleManager<IdentityRole> roleManager)
{
_db = db;
_jwtTokenGenerator = jwtTokenGenerator;
_userManager = userManager;
_roleManager = roleManager;
}
- Add token for Login method
public async Task<LoginResponseDto> Login(LoginRequestDto loginRequestDto)
{
var user = _db.ApplicationUsers.FirstOrDefault(u => u.UserName.ToLower() == loginRequestDto.UserName.ToLower());
if (user == null)
{
return new LoginResponseDto();
}
bool isValid = await _userManager.CheckPasswordAsync(user, loginRequestDto.Password);
if (!isValid)
{
return new LoginResponseDto();
}
//if user was found, Generate JWT Token
var token = _jwtTokenGenerator.GenerateToken(user);
UserDto userDto = new()
{
Email = user.Email,
ID = user.Id,
Name = user.Name,
PhoneNumber = user.PhoneNumber
};
LoginResponseDto loginResponseDto = new LoginResponseDto()
{
User = userDto,
Token = token
};
return loginResponseDto;
}