added an endpoint to see if useraccuont is pending or not
All checks were successful
Format / formatting (push) Successful in 6s
Build / build (push) Successful in 42s
CI / build (push) Successful in 11s

This commit is contained in:
MAILLAL Anas 2025-05-09 21:23:35 +02:00
parent 255af7ee7f
commit d4533ea725
4 changed files with 46 additions and 4 deletions

View File

@ -2,6 +2,7 @@ package enseirb.myinpulse.controller;
import enseirb.myinpulse.model.Entrepreneur; import enseirb.myinpulse.model.Entrepreneur;
import enseirb.myinpulse.service.EntrepreneurApiService; import enseirb.myinpulse.service.EntrepreneurApiService;
import enseirb.myinpulse.service.UtilsService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
@ -14,13 +15,15 @@ import org.springframework.web.bind.annotation.*;
public class UnauthApi { public class UnauthApi {
private final EntrepreneurApiService entrepreneurApiService; private final EntrepreneurApiService entrepreneurApiService;
private final UtilsService utilsService;
@Autowired @Autowired
UnauthApi(EntrepreneurApiService entrepreneurApiService) { UnauthApi(EntrepreneurApiService entrepreneurApiService, UtilsService utilsService) {
this.entrepreneurApiService = entrepreneurApiService; this.entrepreneurApiService = entrepreneurApiService;
this.utilsService = utilsService;
} }
@GetMapping("/unauth/finalize") @PostMapping("/unauth/finalize")
public void createAccount(@AuthenticationPrincipal Jwt principal) { public void createAccount(@AuthenticationPrincipal Jwt principal) {
boolean sneeStatus; boolean sneeStatus;
if (principal.getClaimAsString("sneeStatus") != null) { if (principal.getClaimAsString("sneeStatus") != null) {
@ -46,6 +49,13 @@ public class UnauthApi {
course, course,
sneeStatus, sneeStatus,
true); true);
entrepreneurApiService.createAccount(e); entrepreneurApiService.createAccount(e);
} }
@GetMapping("/unauth/check-if-not-pending")
public Boolean checkAccountStatus(@AuthenticationPrincipal Jwt principal) {
// Throws 404 if user not found
return utilsService.checkEntrepreneurNotPending(principal.getClaimAsString("email"));
}
} }

View File

@ -72,4 +72,10 @@ public class UtilsService {
return false; return false;
} }
} }
public Boolean checkEntrepreneurNotPending(String email) {
// Throws 404 if user not found
User user = userService.getUserByEmail(email);
return !user.isPending();
}
} }

View File

@ -79,6 +79,10 @@ paths:
$ref: "./unauthApi.yaml#/paths/~1unauth~1finalize" $ref: "./unauthApi.yaml#/paths/~1unauth~1finalize"
/unauth/request-join/{projectId}: /unauth/request-join/{projectId}:
$ref: "./unauthApi.yaml#/paths/~1unauth~1request-join~1{projectId}" $ref: "./unauthApi.yaml#/paths/~1unauth~1request-join~1{projectId}"
/unauth/request-admin-role:
$ref: "./unauthApi.yaml#/paths/~1unauth~1request-admin-role"
/unauth/check-if-not-pending:
$ref: "./unauthApi.yaml#/paths/~1unauth~1check-if-not-pending"
# _ ____ __ __ ___ _ _ _ ____ ___ # _ ____ __ __ ___ _ _ _ ____ ___
# / \ | _ \| \/ |_ _| \ | | / \ | _ \_ _| # / \ | _ \| \/ |_ _| \ | | / \ | _ \_ _|

View File

@ -53,7 +53,7 @@ paths:
description: Bad Token - Invalid Keycloack configuration. description: Bad Token - Invalid Keycloack configuration.
/unauth/request-admin-role: /unauth/request-admin-role:
post: post:
summary: Request to join an existing project summary: Request to become an admin
description: Submits a request for the authenticated user (keycloack authenticated) to become an admin. Their role is then changed to admin in server and Keycloak. This requires approval from a project admin. description: Submits a request for the authenticated user (keycloack authenticated) to become an admin. Their role is then changed to admin in server and Keycloak. This requires approval from a project admin.
tags: tags:
- Unauth API - Unauth API
@ -65,4 +65,26 @@ paths:
"401": "401":
description: Unauthorized. description: Unauthorized.
"403": "403":
description: Bad Token - Invalid Keycloack configuration. description: Bad Token - Invalid Keycloack configuration.
/unauth/check-if-not-pending:
get:
summary: Returns a boolean of whether the user's account is not pending
description: Returns a boolean with value `true` if the user's account is not pending and `false` if it is.
tags:
- Unauth API
responses:
"200":
description: Accepted - Become admin request submitted and pending approval.
content:
application/json:
schema:
type: boolean
"400":
description: Bad Request - Invalid project ID format or already member/request pending.
"401":
description: Unauthorized.
"404":
description: Bad Request - User not found in database.
"403":
description: Bad Token - Invalid Keycloack configuration.