Changeset e423ff3 for iknow-api


Ignore:
Timestamp:
10/28/25 10:51:32 (11 months ago)
Author:
GitHub <noreply@…>
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)
Message:

Merge branch 'Dev' into feature/getUser

Location:
iknow-api
Files:
8 added
9 edited

Legend:

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

    rc0256f3 re423ff3  
    1212    {
    1313        private readonly IAuthService _authService;
     14        private readonly IRefreshTokenService _refreshTokenService;
    1415
    15         public AuthController(IAuthService authService)
     16        public AuthController(IAuthService authService, IRefreshTokenService refreshTokenService)
    1617        {
    1718            _authService = authService;
     19            _refreshTokenService = refreshTokenService;
    1820        }
    1921
     
    5456            return Ok(new { message = "You are authorized!" });
    5557        }
     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        }
    5667    }
    5768}
  • iknow-api/DTOs/UserDTO.cs

    rc0256f3 re423ff3  
    66        public string Email { get; set; } = string.Empty;
    77        public string Password { get; set; } = string.Empty;
     8        public bool GenerateRefreshToken { get; set; }
    89    }
    910    public class GetUserDataDto
  • iknow-api/Data/AppDbContext.cs

    rc0256f3 re423ff3  
    1313        public DbSet<HighSchool> HighSchool { get; set; }
    1414        public DbSet<EnrollmentInfo> EnrollmentInfo { get; set; }
     15        public DbSet<RefreshToken> RefreshToken { get; set; }
    1516    }
    1617}
  • iknow-api/Migrations/AppDbContextModelSnapshot.cs

    rc0256f3 re423ff3  
    2424
    2525            modelBuilder.Entity("iknow_api.Models.ContactInfo", b =>
     26            modelBuilder.Entity("iknow_api.Models.RefreshToken", b =>
    2627                {
    2728                    b.Property<int>("Id")
     
    105106
    106107                    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");
    107126                });
    108127
     
    149168                        .WithOne("ContactInfo")
    150169                        .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")
    151175                        .OnDelete(DeleteBehavior.Cascade)
    152176                        .IsRequired();
  • iknow-api/Program.cs

    rc0256f3 re423ff3  
    5050builder.Services.AddScoped<IUserService, UserService>();
    5151
     52builder.Services.AddScoped<IRefreshTokenService, RefreshTokenService>();
     53builder.Services.AddScoped<IUserRepository, UserRepository>();
     54builder.Services.AddScoped<IRefreshTokenRepository, RefreshTokenRepository>();
    5255builder.Services.AddAuthorization();
    5356var app = builder.Build();
  • iknow-api/Repository/Implementations/UserRepository.cs

    rc0256f3 re423ff3  
    3535
    3636
     37        public async Task<User?> GetOnlyUserByIdAsync(int id)
     38        {
     39            return await _context.User.FirstOrDefaultAsync(u => u.Id == id);
     40        }
    3741        public async Task AddUserAsync(User user)
    3842        {
  • iknow-api/Repository/Interface/IUserRepository.cs

    rc0256f3 re423ff3  
    1212        Task<int> GetUsersCountAsync();
    1313        Task<User> GetUserByIdAsync(int id);
     14        Task<User?> GetOnlyUserByIdAsync(int id);
     15
    1416    }
    1517}
  • iknow-api/Services/Implementations/AuthService.cs

    rc0256f3 re423ff3  
    33using System.Text;
    44using BCrypt.Net;
    5 using iknow_api.Controllers;
     5using iknow_api.Services;
    66using iknow_api.Models;
    77using iknow_api.DTOs;
     
    1414    {
    1515        private readonly IUserRepository _userRepository;
     16        private readonly IRefreshTokenRepository _refreshTokenRepository;
     17        private readonly IRefreshTokenService _refreshTokenService;
    1618        private readonly IConfiguration _configuration;
    1719
    18         public AuthService(IUserRepository userRepository, IConfiguration configuration)
     20        public AuthService(IUserRepository userRepository, IConfiguration configuration
     21                            , IRefreshTokenService refreshTokenService, IRefreshTokenRepository refreshTokenRepository)
    1922        {
    2023            _userRepository = userRepository;
    2124            _configuration = configuration;
     25            _refreshTokenService = refreshTokenService;
     26            _refreshTokenRepository = refreshTokenRepository;
    2227        }
    2328
     
    6873        }
    6974
    70         public async Task<string?> LoginAsync(LoginDto loginDto)
     75        public async Task<AuthResultDto?> LoginAsync(LoginDto loginDto)
    7176        {
    7277            var user = await _userRepository.GetUserByUsernameAsync(loginDto.Email);
     
    7479                return null;
    7580
    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;
    7793        }
    7894
     
    8096        {
    8197            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;
    82111        }
    83112
  • iknow-api/Services/Interfaces/IAuthService.cs

    rc0256f3 re423ff3  
    11using iknow_api.DTOs;
    2 
     2using iknow_api.DTOs;
    33namespace iknow_api.Services
    44{
     
    66    {
    77        Task<bool> RegisterAsync(RegisterDto registerDto);
    8         Task<string?> LoginAsync(LoginDto loginDto);
     8        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.