PAT not deleted when project is deleted — causes DuplicatePersonalAccessTokenException on project recreate (SZ-123)
rk@tigase.net opened 1 week ago

Description: When a project is deleted, the auto-generated PAT ({projectName} (auto-generated)) is not cleaned up. If a new project is created with the same name, the PAT creation fails with DuplicatePersonalAccessTokenException, and the user sees "Project created, but token generation failed. Generate one manually."

Steps to reproduce:

  • Create an internal project with "Generate access token" checked
  • Delete the project
  • Recreate a project with the same name
  • Observe PAT generation failure

Expected: Deleting a project cascades to delete its auto-generated PAT

Logs:

rksuma@Ramakrishnans-MacBook-Pro docker % docker compose logs  -f sztab-backend
//...
sztab-backend-1  |         first ? rows only
sztab-backend-1  | 2026-03-20T00:07:40.500Z DEBUG 1 --- [0.0-8181-exec-6] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler com.sztab.exception.handlers.GlobalExceptionHandler#handleDuplicatePat(DuplicatePersonalAccessTokenException)
sztab-backend-1  | 2026-03-20T00:07:40.501Z TRACE 1 --- [0.0-8181-exec-6] o.s.web.method.HandlerMethod             : Arguments: [com.sztab.exception.DuplicatePersonalAccessTokenException: Test-Local-Project (auto-generated)]

^C
rksuma@Ramakrishnans-MacBook-Pro docker % 

  • rk@tigase.net commented 1 week ago

    Root cause: ProjectServiceImpl.deleteProject does not invoke PAT cleanup before deleting the project entity

    Fix: Inject PersonalAccessTokenService into ProjectServiceImpl and delete the project's auto-generated PAT by name pattern before deleting the project, or add a DB-level cascade.

  • rk@tigase.net commented 1 week ago
    rksuma@Ramakrishnans-MacBook-Pro sztab % git checkout -b bugfix/SZ-123-PAT-not-deleted-when-project-is-deleted 
    Switched to a new branch 'bugfix/SZ-123-PAT-not-deleted-when-project-is-deleted'
    rksuma@Ramakrishnans-MacBook-Pro sztab % 
    
  • rk@tigase.net changed state to 'In Progress' 1 week ago
    Previous Value Current Value
    Open
    In Progress
  • rk@tigase.net commented 1 week ago
    rksuma@Ramakrishnans-MacBook-Pro scripts % git status 
    On branch bugfix/SZ-123-PAT-not-deleted-when-project-is-deleted
    Changes to be committed:
      (use "git restore --staged <file>..." to unstage)
    	modified:   ../backend/src/main/java/com/sztab/repository/PersonalAccessTokenRepository.java
    	modified:   ../backend/src/main/java/com/sztab/service/PersonalAccessTokenService.java
    	modified:   ../backend/src/main/java/com/sztab/service/ProjectService.java
    	modified:   ../backend/src/main/java/com/sztab/service/impl/PersonalAccessTokenServiceImpl.java
    	modified:   ../backend/src/main/java/com/sztab/service/impl/ProjectServiceImpl.java
    	modified:   ../backend/src/test/java/com/sztab/service/ProjectServiceImplTest.java
    	modified:   ../frontend/src/components/project/CreateProjectModal.tsx
    
    rksuma@Ramakrishnans-MacBook-Pro scripts % git commit
    [bugfix/SZ-123-PAT-not-deleted-when-project-is-deleted 080937b] fix(SZ-123): delete auto-generated PAT on project deletion
     7 files changed, 30 insertions(+), 3 deletions(-)
    rksuma@Ramakrishnans-MacBook-Pro scripts % git push
    Enumerating objects: 50, done.
    Counting objects: 100% (50/50), done.
    Delta compression using up to 12 threads
    Compressing objects: 100% (23/23), done.
    Writing objects: 100% (27/27), 6.57 KiB | 6.57 MiB/s, done.
    Total 27 (delta 16), reused 0 (delta 0), pack-reused 0 (from 0)
    remote:  
    remote: Create a pull request for 'bugfix/SZ-123-PAT-not-deleted-when-project-is-deleted' by visiting:
    remote:     https://tigase.dev/sztab/~pulls/new?target=1325:wolnosc&source=1325:bugfix/SZ-123-PAT-not-deleted-when-project-is-deleted
    remote:  
    To https://tigase.dev/sztab.git
     * [new branch]      bugfix/SZ-123-PAT-not-deleted-when-project-is-deleted -> bugfix/SZ-123-PAT-not-deleted-when-project-is-deleted
    branch 'bugfix/SZ-123-PAT-not-deleted-when-project-is-deleted' set up to track 'origin/bugfix/SZ-123-PAT-not-deleted-when-project-is-deleted'.
    rksuma@Ramakrishnans-MacBook-Pro scripts % git checkout wolnosc
    git merge --no-ff bugfix/SZ-123-PAT-not-deleted-when-project-is-deleted
    git push
    Switched to branch 'wolnosc'
    Your branch is up to date with 'origin/wolnosc'.
    Merge made by the 'ort' strategy.
     backend/src/main/java/com/sztab/repository/PersonalAccessTokenRepository.java    | 3 +++
     backend/src/main/java/com/sztab/service/PersonalAccessTokenService.java          | 9 +++++++--
     backend/src/main/java/com/sztab/service/ProjectService.java                      | 2 ++
     backend/src/main/java/com/sztab/service/impl/PersonalAccessTokenServiceImpl.java | 7 +++++++
     backend/src/main/java/com/sztab/service/impl/ProjectServiceImpl.java             | 6 ++++++
     backend/src/test/java/com/sztab/service/ProjectServiceImplTest.java              | 1 +
     frontend/src/components/project/CreateProjectModal.tsx                           | 5 ++++-
     7 files changed, 30 insertions(+), 3 deletions(-)
    Enumerating objects: 1, done.
    Counting objects: 100% (1/1), done.
    Writing objects: 100% (1/1), 265 bytes | 265.00 KiB/s, done.
    Total 1 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
    To https://tigase.dev/sztab.git
       3d4c6e3..ada238c  wolnosc -> wolnosc
    rksuma@Ramakrishnans-MacBook-Pro scripts % git branch -d bugfix/SZ-123-PAT-not-deleted-when-project-is-deleted
    git push origin --delete bugfix/SZ-123-PAT-not-deleted-when-project-is-deleted
    Deleted branch bugfix/SZ-123-PAT-not-deleted-when-project-is-deleted (was 080937b).
    remote:  
    remote: Create a pull request for 'bugfix/SZ-123-PAT-not-deleted-when-project-is-deleted' by visiting:
    remote:     https://tigase.dev/sztab/~pulls/new?target=1325:wolnosc&source=1325:bugfix/SZ-123-PAT-not-deleted-when-project-is-deleted
    remote:  
    To https://tigase.dev/sztab.git
     - [deleted]         bugfix/SZ-123-PAT-not-deleted-when-project-is-deleted
    rksuma@Ramakrishnans-MacBook-Pro scripts % 
    
    
  • rk@tigase.net changed state to 'Closed' 1 week ago
    Previous Value Current Value
    In Progress
    Closed
issue 1 of 1
Type
Bug
Priority
Normal
Assignee
Version
1.10.0
Sprints
n/a
Customer
n/a
Issue Votes (0)
Watchers (3)
Reference
SZ-123
Please wait...
Page is in error, reload to recover