- Timestamp:
- 10/28/25 10:51:32 (11 months ago)
- Branches:
- master
- Children:
- 1d32d5c
- Parents:
- c0256f3 (diff), 28759eb (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - git-author:
- Boris Gjorgjievski <69085722+imbrsk@…> (10/28/25 10:51:32)
- git-committer:
- GitHub <noreply@…> (10/28/25 10:51:32)
- Location:
- iknow-api
- Files:
-
- 8 added
- 9 edited
-
Controllers/AuthController.cs (modified) (2 diffs)
-
DTOs/RefreshTokenDTO.cs (added)
-
DTOs/UserDTO.cs (modified) (1 diff)
-
Data/AppDbContext.cs (modified) (1 diff)
-
Migrations/20251028091953_new.Designer.cs (added)
-
Migrations/20251028091953_new.cs (added)
-
Migrations/AppDbContextModelSnapshot.cs (modified) (3 diffs)
-
Models/RefreshToken.cs (added)
-
Program.cs (modified) (1 diff)
-
Repository/Implementations/RefreshTokenRepository.cs (added)
-
Repository/Implementations/UserRepository.cs (modified) (1 diff)
-
Repository/Interface/IRefreshTokenRepository.cs (added)
-
Repository/Interface/IUserRepository.cs (modified) (1 diff)
-
Services/Implementations/AuthService.cs (modified) (5 diffs)
-
Services/Implementations/RefreshTokenService.cs (added)
-
Services/Interfaces/IAuthService.cs (modified) (2 diffs)
-
Services/Interfaces/IRefreshTokenService.cs (added)
Legend:
- Unmodified
- Added
- Removed
-
iknow-api/Controllers/AuthController.cs
rc0256f3 re423ff3 12 12 { 13 13 private readonly IAuthService _authService; 14 private readonly IRefreshTokenService _refreshTokenService; 14 15 15 public AuthController(IAuthService authService )16 public AuthController(IAuthService authService, IRefreshTokenService refreshTokenService) 16 17 { 17 18 _authService = authService; 19 _refreshTokenService = refreshTokenService; 18 20 } 19 21 … … 54 56 return Ok(new { message = "You are authorized!" }); 55 57 } 58 59 [HttpPost("verify-user-token")] 60 public async Task<IActionResult> VerifyToken([FromBody] VerifyRefreshTokenDto verifyRefreshToken) 61 { 62 if (await _refreshTokenService.VerifyRefreshToken(verifyRefreshToken)) 63 { return Ok(await _authService.GenerateNewJWT(verifyRefreshToken)); } 64 else 65 { return BadRequest(new { message = "No token found!" }); } 66 } 56 67 } 57 68 } -
iknow-api/DTOs/UserDTO.cs
rc0256f3 re423ff3 6 6 public string Email { get; set; } = string.Empty; 7 7 public string Password { get; set; } = string.Empty; 8 public bool GenerateRefreshToken { get; set; } 8 9 } 9 10 public class GetUserDataDto -
iknow-api/Data/AppDbContext.cs
rc0256f3 re423ff3 13 13 public DbSet<HighSchool> HighSchool { get; set; } 14 14 public DbSet<EnrollmentInfo> EnrollmentInfo { get; set; } 15 public DbSet<RefreshToken> RefreshToken { get; set; } 15 16 } 16 17 } -
iknow-api/Migrations/AppDbContextModelSnapshot.cs
rc0256f3 re423ff3 24 24 25 25 modelBuilder.Entity("iknow_api.Models.ContactInfo", b => 26 modelBuilder.Entity("iknow_api.Models.RefreshToken", b => 26 27 { 27 28 b.Property<int>("Id") … … 105 106 106 107 b.ToTable("HighSchool"); 108 b.Property<DateTime>("ExpiresAt") 109 .HasColumnType("timestamp with time zone"); 110 111 b.Property<bool>("IsValid") 112 .HasColumnType("boolean"); 113 114 b.Property<string>("Token") 115 .IsRequired() 116 .HasColumnType("text"); 117 118 b.Property<int>("UserId") 119 .HasColumnType("integer"); 120 121 b.HasKey("Id"); 122 123 b.HasIndex("UserId"); 124 125 b.ToTable("RefreshToken"); 107 126 }); 108 127 … … 149 168 .WithOne("ContactInfo") 150 169 .HasForeignKey("iknow_api.Models.ContactInfo", "UserId") 170 modelBuilder.Entity("iknow_api.Models.RefreshToken", b => 171 { 172 b.HasOne("iknow_api.Models.User", "User") 173 .WithMany() 174 .HasForeignKey("UserId") 151 175 .OnDelete(DeleteBehavior.Cascade) 152 176 .IsRequired(); -
iknow-api/Program.cs
rc0256f3 re423ff3 50 50 builder.Services.AddScoped<IUserService, UserService>(); 51 51 52 builder.Services.AddScoped<IRefreshTokenService, RefreshTokenService>(); 53 builder.Services.AddScoped<IUserRepository, UserRepository>(); 54 builder.Services.AddScoped<IRefreshTokenRepository, RefreshTokenRepository>(); 52 55 builder.Services.AddAuthorization(); 53 56 var app = builder.Build(); -
iknow-api/Repository/Implementations/UserRepository.cs
rc0256f3 re423ff3 35 35 36 36 37 public async Task<User?> GetOnlyUserByIdAsync(int id) 38 { 39 return await _context.User.FirstOrDefaultAsync(u => u.Id == id); 40 } 37 41 public async Task AddUserAsync(User user) 38 42 { -
iknow-api/Repository/Interface/IUserRepository.cs
rc0256f3 re423ff3 12 12 Task<int> GetUsersCountAsync(); 13 13 Task<User> GetUserByIdAsync(int id); 14 Task<User?> GetOnlyUserByIdAsync(int id); 15 14 16 } 15 17 } -
iknow-api/Services/Implementations/AuthService.cs
rc0256f3 re423ff3 3 3 using System.Text; 4 4 using BCrypt.Net; 5 using iknow_api. Controllers;5 using iknow_api.Services; 6 6 using iknow_api.Models; 7 7 using iknow_api.DTOs; … … 14 14 { 15 15 private readonly IUserRepository _userRepository; 16 private readonly IRefreshTokenRepository _refreshTokenRepository; 17 private readonly IRefreshTokenService _refreshTokenService; 16 18 private readonly IConfiguration _configuration; 17 19 18 public AuthService(IUserRepository userRepository, IConfiguration configuration) 20 public AuthService(IUserRepository userRepository, IConfiguration configuration 21 , IRefreshTokenService refreshTokenService, IRefreshTokenRepository refreshTokenRepository) 19 22 { 20 23 _userRepository = userRepository; 21 24 _configuration = configuration; 25 _refreshTokenService = refreshTokenService; 26 _refreshTokenRepository = refreshTokenRepository; 22 27 } 23 28 … … 68 73 } 69 74 70 public async Task< string?> LoginAsync(LoginDto loginDto)75 public async Task<AuthResultDto?> LoginAsync(LoginDto loginDto) 71 76 { 72 77 var user = await _userRepository.GetUserByUsernameAsync(loginDto.Email); … … 74 79 return null; 75 80 76 return CreateToken(user); 81 var result = new AuthResultDto 82 { 83 AccessToken = CreateToken(user) 84 }; 85 86 if (loginDto.GenerateRefreshToken) 87 { 88 int userid = _userRepository.GetUserByUsernameAsync(loginDto.Email).Id; 89 result.RefreshToken = await _refreshTokenService.GenerateRefreshToken(userid); 90 } 91 92 return result; 77 93 } 78 94 … … 80 96 { 81 97 return await _userRepository.GetUsersCountAsync(); 98 } 99 100 public async Task<AuthResultDto> GenerateNewJWT(VerifyRefreshTokenDto token) 101 { 102 int userid = await _refreshTokenRepository.GetUserId(token.token) ?? 0; 103 User user = await _userRepository.GetOnlyUserByIdAsync(userid); 104 105 var result = new AuthResultDto 106 { 107 AccessToken = CreateToken(user) 108 }; 109 110 return result; 82 111 } 83 112 -
iknow-api/Services/Interfaces/IAuthService.cs
rc0256f3 re423ff3 1 1 using iknow_api.DTOs; 2 2 using iknow_api.DTOs; 3 3 namespace iknow_api.Services 4 4 { … … 6 6 { 7 7 Task<bool> RegisterAsync(RegisterDto registerDto); 8 Task< string?> LoginAsync(LoginDto loginDto);8 Task<AuthResultDto?> LoginAsync(LoginDto loginDto); 9 9 Task<int> GetUsersCountAsync(); 10 Task<AuthResultDto> GenerateNewJWT(VerifyRefreshTokenDto token); 10 11 } 11 12 }
Note:
See TracChangeset
for help on using the changeset viewer.
