Added refresh token #1116

Merged
a22erigr merged 11 commits from #992-add-refresh-token-rewrite into both_teams_week_8 2026-05-27 08:50:15 +00:00
Collaborator

Added refresh token

Environment

This was developed on an Arch-based Linux distribution.

What has been done?

  • DockerCompose/stacks/user/init_sql/00-users.sql
    • Updated to add the session table (for saving active user logins).
  • service/loginService/loginService/DatabaseLogic/DatabaseQueries.cs
    • Added logic for adding sessions and deleting sessions.
    • Made some values explicitly nullable instead of implicit.
  • service/loginService/loginService/Endpoints/AuthEndpoints.cs
    • Cleaned up some code, specifically the part where some values became explicitly nullable.
    • Added refresh token to be added on login.
    • Added it so the token can be refreshed.
    • Added logic for deleting sessions.
  • service/loginService/loginService/Models/Response/Response.cs
    • Added the refresh token to be included in the response.
  • service/loginService/loginService/Program.cs
    • Cleaned up the database string situation and cleaned some code in general.
  • service/loginService/loginService/Services/TokenService.cs
    • Added a method to generate a random refresh token.
    • Added also a method to hash the tokens before they are stored in the database. This is done so that if the database gets exposed, no one can use the tokens to log in as someone else they shouldn't be.
  • service/loginService/loginService/Endpoints/AuthEndpoints.cs
    • Added endpoints for refreshing and logging out.
    • Login was also updated to set the refresh token as well in cookies.

Issue:

#992

# Added refresh token ## Environment This was developed on an Arch-based Linux distribution. ## What has been done? * **DockerCompose/stacks/user/init_sql/00-users.sql** * Updated to add the session table (for saving active user logins). * **service/loginService/loginService/DatabaseLogic/DatabaseQueries.cs** * Added logic for adding sessions and deleting sessions. * Made some values explicitly nullable instead of implicit. * **service/loginService/loginService/Endpoints/AuthEndpoints.cs** * Cleaned up some code, specifically the part where some values became explicitly nullable. * Added refresh token to be added on login. * Added it so the token can be refreshed. * Added logic for deleting sessions. * **service/loginService/loginService/Models/Response/Response.cs** * Added the refresh token to be included in the response. * **service/loginService/loginService/Program.cs** * Cleaned up the database string situation and cleaned some code in general. * **service/loginService/loginService/Services/TokenService.cs** * Added a method to generate a random refresh token. * Added also a method to hash the tokens before they are stored in the database. This is done so that if the database gets exposed, no one can use the tokens to log in as someone else they shouldn't be. * **service/loginService/loginService/Endpoints/AuthEndpoints.cs** * Added endpoints for refreshing and logging out. * Login was also updated to set the refresh token as well in cookies. ## Issue: #992
Author
Collaborator

Added

  • service/loginService/loginService/Models/JwtConfiguration.cs
    • This is an object to hold the configuration for JWT, which is used at different points in the program.
  • service/loginService/loginService/Program.cs
    • Added the configuration to be added scoped.
  • service/loginService/loginService/Services/TokenService.cs
    • Added so it uses an interface (for testing and scoping),
    • Added also the JWT configuration objects.
  • service/loginService/loginService/Services/AuthService.cs
    • Added the JWT configuration here also.
# Added * **service/loginService/loginService/Models/JwtConfiguration.cs** * This is an object to hold the configuration for JWT, which is used at different points in the program. * **service/loginService/loginService/Program.cs** * Added the configuration to be added scoped. * **service/loginService/loginService/Services/TokenService.cs** * Added so it uses an interface (for testing and scoping), * Added also the JWT configuration objects. * **service/loginService/loginService/Services/AuthService.cs** * Added the JWT configuration here also.
Collaborator

Review on #992

Whats done

Tested on Windows using Firefox

  • App starts
    • Login with invalid credentials shows error without crashing

Inspected following files

  • DockerCompose/stacks/user/init_sql/00-users.sql
    • Added sessions table, email UNIQUE constraint, indexes
    • SQL standard
      • Lowercase names, underscores, plural table name, _id suffix, follows wiki standard
    • Comments
      • Could use a comment above the sessions table
  • service/loginService/loginService/DatabaseLogic/DatabaseQueries.cs
    • Naming convention
      • Follows wiki standard
    • Comments
      • XML comments on public methods, follows wiki standard
    • General code quality
      • looks ok
  • service/loginService/loginService/DatabaseLogic/IDatabaseQueries.cs
    • Follows wiki standard
  • service/loginService/loginService/Endpoints/AuthEndpoints.cs
    • Added /Refresh, /Logout, /health endpoints
    • Follows wiki standard
  • service/loginService/loginService/Endpoints/ProtectedEndpoints.cs
    • No issues
  • service/loginService/loginService/Models/JwtConfiguration.cs
    • Follows wiki standard
  • service/loginService/loginService/Models/Response/Response.cs
    • No issues
  • service/loginService/loginService/Models/DBRows/UserRow.cs, ChangePasswordDto.cs, LoginUserDto.cs, SignUpUserDto.cs
    • Indentation reformatted, follows wiki standard
  • service/loginService/loginService/Services/TokenService.cs
    • Follows wiki standard
  • service/loginService/loginService/Services/ITokenService.cs
    • Follows wiki standard
  • service/loginService/loginService/Services/AuthService.cs
    • Comments
      • XML comments on all methods. Some don't end with a period which the C# wiki standard requires, but minor issue
    • General code quality
      • Typo: "valid toke found" should be "valid token found"
      • Log message "User logged out failed for refresh attempt." is a bit unclear
  • service/loginService/loginService/Program.cs
    • No issues
  • service/loginService/loginService/Util/PasswordHasher.cs
    • Indentation reformatted, no logic changes
  • Test files
    • Indentation reformatted, no logic changes
  • frontend/src/features/login/LoginModal.js
    • Fixed import path, no issues
  • scripts/WindowsInstallation.bat
    • follows wiki standard
  • scripts/UnixInstallation.sh
    • follows wiki standard
  • package.json
    • No new dependencies
  • loginService.csproj
    • No new NuGet packages

What needs to be done

  • AuthService.cs Typo: "valid toke found" should be "valid token found"
  • AuthService.cs Reword log message "User logged out failed for refresh attempt."

Conclusion

  • Two minor fixes needed before merge.
# Review on #992 ## Whats done ### Tested on Windows using Firefox + App starts + Login with invalid credentials shows error without crashing ### Inspected following files + DockerCompose/stacks/user/init_sql/00-users.sql + Added sessions table, email UNIQUE constraint, indexes + SQL standard + Lowercase names, underscores, plural table name, _id suffix, follows wiki standard + Comments + Could use a comment above the sessions table + service/loginService/loginService/DatabaseLogic/DatabaseQueries.cs + Naming convention + Follows wiki standard + Comments + XML comments on public methods, follows wiki standard + General code quality + looks ok + service/loginService/loginService/DatabaseLogic/IDatabaseQueries.cs + Follows wiki standard + service/loginService/loginService/Endpoints/AuthEndpoints.cs + Added /Refresh, /Logout, /health endpoints + Follows wiki standard + service/loginService/loginService/Endpoints/ProtectedEndpoints.cs + No issues + service/loginService/loginService/Models/JwtConfiguration.cs + Follows wiki standard + service/loginService/loginService/Models/Response/Response.cs + No issues + service/loginService/loginService/Models/DBRows/UserRow.cs, ChangePasswordDto.cs, LoginUserDto.cs, SignUpUserDto.cs + Indentation reformatted, follows wiki standard + service/loginService/loginService/Services/TokenService.cs + Follows wiki standard + service/loginService/loginService/Services/ITokenService.cs + Follows wiki standard + service/loginService/loginService/Services/AuthService.cs + Comments + XML comments on all methods. Some don't end with a period which the C# wiki standard requires, but minor issue + General code quality + Typo: "valid toke found" should be "valid token found" + Log message "User logged out failed for refresh attempt." is a bit unclear + service/loginService/loginService/Program.cs + No issues + service/loginService/loginService/Util/PasswordHasher.cs + Indentation reformatted, no logic changes + Test files + Indentation reformatted, no logic changes + frontend/src/features/login/LoginModal.js + Fixed import path, no issues + scripts/WindowsInstallation.bat + follows wiki standard + scripts/UnixInstallation.sh + follows wiki standard + package.json + No new dependencies + loginService.csproj + No new NuGet packages ## What needs to be done + AuthService.cs Typo: "valid toke found" should be "valid token found" + AuthService.cs Reword log message "User logged out failed for refresh attempt." ## Conclusion + Two minor fixes needed before merge.
a22erigr changed target branch from team_2_week_7 to both_teams_week_8 2026-05-26 11:50:37 +00:00
Author
Collaborator

I have now fix the issues

I have now fix the issues
a24vinla approved these changes 2026-05-27 08:06:27 +00:00
a24vinla left a comment
Collaborator

Review on fixes after review on #992

Whats done

Merge of team_2_week_7 into this branch

Tested on Windows using Chrome

  • App starts!

Inspected following files

  • service/loginService/loginService/DatabaseLogic/DatabaseQueries.cs
    • Comments look good
    • Changes to names also look good
  • service/loginService/loginService/Endpoints/AuthEndpoints.cs
    • Builds and follows standards
  • service/loginService/loginService/Program.cs
    • Follows standards
  • service/loginService/loginService/Services/AuthService.cs
    • Follows standards
  • service/loginService/loginService/Services/IAuthService.cs
    • Looks good 👍
  • service/loginService/loginService/Services/TokenService.cs
    • 👍

What needs to be done

Nothings! 👍

# Review on fixes after review on #992 ## Whats done Merge of team_2_week_7 into this branch ### Tested on Windows using Chrome + App starts! ### Inspected following files + service/loginService/loginService/DatabaseLogic/DatabaseQueries.cs + Comments look good + Changes to names also look good + service/loginService/loginService/Endpoints/AuthEndpoints.cs + Builds and follows standards + service/loginService/loginService/Program.cs + Follows standards + service/loginService/loginService/Services/AuthService.cs + Follows standards + service/loginService/loginService/Services/IAuthService.cs + Looks good 👍 + service/loginService/loginService/Services/TokenService.cs + 👍 ## What needs to be done Nothings! 👍
a22erigr merged commit f78d60f362 into both_teams_week_8 2026-05-27 08:50:15 +00:00
a22erigr deleted branch #992-add-refresh-token-rewrite 2026-05-27 08:50:16 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
3 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Andras/BoundlessFlowCampus2K!1116
No description provided.