Changeset 1e58098 for iknow-api


Ignore:
Timestamp:
10/28/25 10:41:05 (11 months ago)
Author:
imbrsk <boris696boris@…>
Branches:
master
Children:
28759eb, 7a1fe00
Parents:
4e061d8
Message:

added remaining methods to refreshtoken feature

Location:
iknow-api
Files:
10 edited
2 moved

Legend:

Unmodified
Added
Removed
  • iknow-api/Controllers/AuthController.cs

    r4e061d8 r1e58098  
    5757        }
    5858
    59         [HttpPost("verify-token")]
    60         public async Task<IActionResult> verifyToken([FromBody]  VerifyRefreshTokenDto VerifyRefreshTokenDto)
     59        [HttpPost("verify-user-token")]
     60        public async Task<IActionResult> VerifyToken([FromBody] VerifyRefreshTokenDto verifyRefreshToken)
    6161        {
    62             if (await _refreshTokenService.VerifyRefreshToken(VerifyRefreshTokenDto))
    63             {   return Ok();    }
     62            if (await _refreshTokenService.VerifyRefreshToken(verifyRefreshToken))
     63            { return Ok(await _authService.GenerateNewJWT(verifyRefreshToken)); }
    6464            else
    65             {   return BadRequest("No token found");    }
     65            { return BadRequest(new { message = "No token found!" }); }
    6666        }
    6767    }
  • iknow-api/DTOs/RefreshTokenDTO.cs

    r4e061d8 r1e58098  
    33    public class VerifyRefreshTokenDto
    44    {
    5         public string? token;
     5        public string token { get; set; }
    66    }
    77    public class AuthResultDto
  • iknow-api/Migrations/20251028091953_new.Designer.cs

    r4e061d8 r1e58098  
    1313{
    1414    [DbContext(typeof(AppDbContext))]
    15     [Migration("20251027140958_refreshtoken")]
    16     partial class refreshtoken
     15    [Migration("20251028091953_new")]
     16    partial class @new
    1717    {
    1818        /// <inheritdoc />
  • iknow-api/Migrations/20251028091953_new.cs

    r4e061d8 r1e58098  
    88{
    99    /// <inheritdoc />
    10     public partial class refreshtoken : Migration
     10    public partial class @new : Migration
    1111    {
    1212        /// <inheritdoc />
  • iknow-api/Models/RefreshToken.cs

    r4e061d8 r1e58098  
    66    {
    77        public int Id { get; set; }
    8          public int UserId { get; set; }
    9         public User User { get; set; } = null!;
    10         public string Token { get; set; }
     8        public int UserId { get; set; }
     9        public User User { get; set; }
     10        public string? Token { get; set; }
    1111        public DateTime ExpiresAt { get; set; }
    1212        public bool IsValid { get; set; }
  • iknow-api/Repository/Implementations/RefreshTokenRepository.cs

    r4e061d8 r1e58098  
    55using iknow_api.Services;
    66using iknow_api.DTOs;
     7using System.Runtime.CompilerServices;
    78
    89namespace iknow_api.Repositories
     
    2829        }
    2930
     31        public async Task<int?> GetUserId(string refreshTokenDto)
     32        {
     33            var token = await _context.RefreshToken.FirstOrDefaultAsync(u => u.Token == refreshTokenDto);
     34            return token?.UserId ;
     35        }
    3036
    3137        public async Task<bool> VerifyTokenAsync(VerifyRefreshTokenDto refreshTokenDto)
    3238        {
    33              return await _context.RefreshToken
    34             .AnyAsync(rt => rt.Token == refreshTokenDto.token && !rt.IsValid && rt.ExpiresAt > DateTime.UtcNow);
     39            var token = await _context.RefreshToken
     40                .FirstOrDefaultAsync(rt =>
     41                    rt.Token == refreshTokenDto.token &&
     42                    rt.IsValid &&
     43                    rt.ExpiresAt > DateTime.UtcNow);
     44
     45            return token != null;
    3546        }
     47
    3648    }
    3749}
  • iknow-api/Repository/Implementations/UserRepository.cs

    r4e061d8 r1e58098  
    2424            return await _context.User.FirstOrDefaultAsync(u => u.Email == username);
    2525        }
    26 
     26        public async Task<User?> GetOnlyUserByIdAsync(int id)
     27        {
     28            return await _context.User.FirstOrDefaultAsync(u => u.Id == id);
     29        }
    2730        public async Task AddUserAsync(User user)
    2831        {
  • iknow-api/Repository/Interface/IRefreshTokenRepository.cs

    r4e061d8 r1e58098  
    77        Task<bool> VerifyTokenAsync(VerifyRefreshTokenDto refreshTokenDto);
    88        Task<bool> DeleteTokenAsync(string refreshTokenDto);
     9        Task<int?> GetUserId(string refreshTokenDto);
    910       
    1011    }
  • iknow-api/Repository/Interface/IUserRepository.cs

    r4e061d8 r1e58098  
    88        Task AddUserAsync(User user);
    99        Task<int> GetUsersCountAsync();
     10        Task<User?> GetOnlyUserByIdAsync(int id);
     11
    1012    }
    1113}
  • iknow-api/Services/Implementations/AuthService.cs

    r4e061d8 r1e58098  
    1414    {
    1515        private readonly IUserRepository _userRepository;
     16        private readonly IRefreshTokenRepository _refreshTokenRepository;
    1617        private readonly IRefreshTokenService _refreshTokenService;
    1718        private readonly IConfiguration _configuration;
    1819
    19         public AuthService(IUserRepository userRepository, IConfiguration configuration, IRefreshTokenService refreshTokenService)
     20        public AuthService(IUserRepository userRepository, IConfiguration configuration
     21                            , IRefreshTokenService refreshTokenService, IRefreshTokenRepository refreshTokenRepository)
    2022        {
    2123            _userRepository = userRepository;
    2224            _configuration = configuration;
    2325            _refreshTokenService = refreshTokenService;
     26            _refreshTokenRepository = refreshTokenRepository;
    2427        }
    2528
     
    5861            if (loginDto.GenerateRefreshToken)
    5962            {
    60                 //int userid = _userRepository.GetUserByUsernameAsync(loginDto.Email).Id;
    61                 result.RefreshToken = await _refreshTokenService.GenerateRefreshToken(6);
     63                int userid = _userRepository.GetUserByUsernameAsync(loginDto.Email).Id;
     64                result.RefreshToken = await _refreshTokenService.GenerateRefreshToken(userid);
    6265            }
    6366
     
    6871        {
    6972            return await _userRepository.GetUsersCountAsync();
     73        }
     74
     75        public async Task<AuthResultDto> GenerateNewJWT(VerifyRefreshTokenDto token)
     76        {
     77            int userid = await _refreshTokenRepository.GetUserId(token.token) ?? 0;
     78            User user = await _userRepository.GetOnlyUserByIdAsync(userid);
     79
     80            var result = new AuthResultDto
     81            {
     82                AccessToken = CreateToken(user)
     83            };
     84           
     85            return result;
    7086        }
    7187
  • iknow-api/Services/Implementations/RefreshTokenService.cs

    r4e061d8 r1e58098  
    4545            return await _refreshTokenRepository.VerifyTokenAsync(refreshTokenDto);
    4646        }
     47
     48       
    4749    }
    4850}
  • iknow-api/Services/Interfaces/IAuthService.cs

    r4e061d8 r1e58098  
    11using iknow_api.DTOs;
    2 
     2using iknow_api.DTOs;
    33namespace iknow_api.Services
    44{
     
    88        Task<AuthResultDto?> LoginAsync(LoginDto loginDto);
    99        Task<int> GetUsersCountAsync();
     10        Task<AuthResultDto> GenerateNewJWT(VerifyRefreshTokenDto token);
    1011    }
    1112}
Note: See TracChangeset for help on using the changeset viewer.