Changeset 4e061d8
- Timestamp:
- 10/27/25 15:22:39 (11 months ago)
- Branches:
- master
- Children:
- 1e58098
- Parents:
- 5eb7847
- Location:
- iknow-api
- Files:
-
- 6 added
- 8 edited
- 2 moved
-
Controllers/AuthController.cs (modified) (2 diffs)
-
DTOs/RefreshTokenDTO.cs (added)
-
DTOs/UserDTO.cs (modified) (1 diff)
-
Data/AppDbContext.cs (modified) (1 diff)
-
Migrations/20251027140958_refreshtoken.Designer.cs (moved) (moved from iknow-api/Migrations/20251022202014_InitialCreate.Designer.cs ) (3 diffs)
-
Migrations/20251027140958_refreshtoken.cs (moved) (moved from iknow-api/Migrations/20251022202014_InitialCreate.cs ) (3 diffs)
-
Migrations/AppDbContextModelSnapshot.cs (modified) (2 diffs)
-
Models/RefreshToken.cs (added)
-
Models/User.cs (modified) (1 diff)
-
Program.cs (modified) (1 diff)
-
Repository/Implementations/RefreshTokenRepository.cs (added)
-
Repository/Interface/IRefreshTokenRepository.cs (added)
-
Services/Implementations/AuthService.cs (modified) (4 diffs)
-
Services/Implementations/RefreshTokenService.cs (added)
-
Services/Interfaces/IAuthService.cs (modified) (1 diff)
-
Services/Interfaces/IRefreshTokenService.cs (added)
Legend:
- Unmodified
- Added
- Removed
-
iknow-api/Controllers/AuthController.cs
r5eb7847 r4e061d8 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-token")] 60 public async Task<IActionResult> verifyToken([FromBody] VerifyRefreshTokenDto VerifyRefreshTokenDto) 61 { 62 if (await _refreshTokenService.VerifyRefreshToken(VerifyRefreshTokenDto)) 63 { return Ok(); } 64 else 65 { return BadRequest("No token found"); } 66 } 56 67 } 57 68 } -
iknow-api/DTOs/UserDTO.cs
r5eb7847 r4e061d8 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 -
iknow-api/Data/AppDbContext.cs
r5eb7847 r4e061d8 10 10 11 11 public DbSet<User> User { get; set; } 12 public DbSet<RefreshToken> RefreshToken { get; set; } 12 13 } 13 14 } -
iknow-api/Migrations/20251027140958_refreshtoken.Designer.cs
r5eb7847 r4e061d8 13 13 { 14 14 [DbContext(typeof(AppDbContext))] 15 [Migration("2025102 2202014_InitialCreate")]16 partial class InitialCreate15 [Migration("20251027140958_refreshtoken")] 16 partial class refreshtoken 17 17 { 18 18 /// <inheritdoc /> … … 26 26 NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); 27 27 28 modelBuilder.Entity("iknow_api.Core.Models.User", b => 28 modelBuilder.Entity("iknow_api.Models.RefreshToken", b => 29 { 30 b.Property<int>("Id") 31 .ValueGeneratedOnAdd() 32 .HasColumnType("integer"); 33 34 NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); 35 36 b.Property<DateTime>("ExpiresAt") 37 .HasColumnType("timestamp with time zone"); 38 39 b.Property<bool>("IsValid") 40 .HasColumnType("boolean"); 41 42 b.Property<string>("Token") 43 .IsRequired() 44 .HasColumnType("text"); 45 46 b.Property<int>("UserId") 47 .HasColumnType("integer"); 48 49 b.HasKey("Id"); 50 51 b.HasIndex("UserId"); 52 53 b.ToTable("RefreshToken"); 54 }); 55 56 modelBuilder.Entity("iknow_api.Models.User", b => 29 57 { 30 58 b.Property<int>("Id") … … 62 90 b.ToTable("User"); 63 91 }); 92 93 modelBuilder.Entity("iknow_api.Models.RefreshToken", b => 94 { 95 b.HasOne("iknow_api.Models.User", "User") 96 .WithMany() 97 .HasForeignKey("UserId") 98 .OnDelete(DeleteBehavior.Cascade) 99 .IsRequired(); 100 101 b.Navigation("User"); 102 }); 64 103 #pragma warning restore 612, 618 65 104 } -
iknow-api/Migrations/20251027140958_refreshtoken.cs
r5eb7847 r4e061d8 8 8 { 9 9 /// <inheritdoc /> 10 public partial class InitialCreate: Migration10 public partial class refreshtoken : Migration 11 11 { 12 12 /// <inheritdoc /> … … 32 32 table.PrimaryKey("PK_User", x => x.Id); 33 33 }); 34 35 migrationBuilder.CreateTable( 36 name: "RefreshToken", 37 columns: table => new 38 { 39 Id = table.Column<int>(type: "integer", nullable: false) 40 .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), 41 UserId = table.Column<int>(type: "integer", nullable: false), 42 Token = table.Column<string>(type: "text", nullable: false), 43 ExpiresAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: false), 44 IsValid = table.Column<bool>(type: "boolean", nullable: false) 45 }, 46 constraints: table => 47 { 48 table.PrimaryKey("PK_RefreshToken", x => x.Id); 49 table.ForeignKey( 50 name: "FK_RefreshToken_User_UserId", 51 column: x => x.UserId, 52 principalTable: "User", 53 principalColumn: "Id", 54 onDelete: ReferentialAction.Cascade); 55 }); 56 57 migrationBuilder.CreateIndex( 58 name: "IX_RefreshToken_UserId", 59 table: "RefreshToken", 60 column: "UserId"); 34 61 } 35 62 … … 38 65 { 39 66 migrationBuilder.DropTable( 67 name: "RefreshToken"); 68 69 migrationBuilder.DropTable( 40 70 name: "User"); 41 71 } -
iknow-api/Migrations/AppDbContextModelSnapshot.cs
r5eb7847 r4e061d8 23 23 NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); 24 24 25 modelBuilder.Entity("iknow_api.Core.Models.User", b => 25 modelBuilder.Entity("iknow_api.Models.RefreshToken", b => 26 { 27 b.Property<int>("Id") 28 .ValueGeneratedOnAdd() 29 .HasColumnType("integer"); 30 31 NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); 32 33 b.Property<DateTime>("ExpiresAt") 34 .HasColumnType("timestamp with time zone"); 35 36 b.Property<bool>("IsValid") 37 .HasColumnType("boolean"); 38 39 b.Property<string>("Token") 40 .IsRequired() 41 .HasColumnType("text"); 42 43 b.Property<int>("UserId") 44 .HasColumnType("integer"); 45 46 b.HasKey("Id"); 47 48 b.HasIndex("UserId"); 49 50 b.ToTable("RefreshToken"); 51 }); 52 53 modelBuilder.Entity("iknow_api.Models.User", b => 26 54 { 27 55 b.Property<int>("Id") … … 59 87 b.ToTable("User"); 60 88 }); 89 90 modelBuilder.Entity("iknow_api.Models.RefreshToken", b => 91 { 92 b.HasOne("iknow_api.Models.User", "User") 93 .WithMany() 94 .HasForeignKey("UserId") 95 .OnDelete(DeleteBehavior.Cascade) 96 .IsRequired(); 97 98 b.Navigation("User"); 99 }); 61 100 #pragma warning restore 612, 618 62 101 } -
iknow-api/Models/User.cs
r5eb7847 r4e061d8 21 21 public DateTime CreatedAt { get; set; } 22 22 public UserRole Role { get; set; } 23 23 24 } 24 25 } -
iknow-api/Program.cs
r5eb7847 r4e061d8 42 42 // Register your services 43 43 builder.Services.AddScoped<IAuthService, AuthService>(); 44 builder.Services.AddScoped<IUserRepository, UserRepository>(); // You'll need to add the UserRepository implementation 44 builder.Services.AddScoped<IRefreshTokenService, RefreshTokenService>(); 45 builder.Services.AddScoped<IUserRepository, UserRepository>(); 46 builder.Services.AddScoped<IRefreshTokenRepository, RefreshTokenRepository>(); 45 47 builder.Services.AddAuthorization(); 46 48 var app = builder.Build(); -
iknow-api/Services/Implementations/AuthService.cs
r5eb7847 r4e061d8 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 IRefreshTokenService _refreshTokenService; 16 17 private readonly IConfiguration _configuration; 17 18 18 public AuthService(IUserRepository userRepository, IConfiguration configuration )19 public AuthService(IUserRepository userRepository, IConfiguration configuration, IRefreshTokenService refreshTokenService) 19 20 { 20 21 _userRepository = userRepository; 21 22 _configuration = configuration; 23 _refreshTokenService = refreshTokenService; 22 24 } 23 25 … … 43 45 } 44 46 45 public async Task< string?> LoginAsync(LoginDto loginDto)47 public async Task<AuthResultDto?> LoginAsync(LoginDto loginDto) 46 48 { 47 49 var user = await _userRepository.GetUserByUsernameAsync(loginDto.Email); … … 49 51 return null; 50 52 51 return CreateToken(user); 53 var result = new AuthResultDto 54 { 55 AccessToken = CreateToken(user) 56 }; 57 58 if (loginDto.GenerateRefreshToken) 59 { 60 //int userid = _userRepository.GetUserByUsernameAsync(loginDto.Email).Id; 61 result.RefreshToken = await _refreshTokenService.GenerateRefreshToken(6); 62 } 63 64 return result; 52 65 } 53 66 -
iknow-api/Services/Interfaces/IAuthService.cs
r5eb7847 r4e061d8 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 10 }
Note:
See TracChangeset
for help on using the changeset viewer.
