@@ -5,6 +5,7 @@ import { Express, Request, Response } from "express";
55import {
66 clearAllAccountsAuthoritiesCache ,
77 clearAuthoritiesCacheForAccount ,
8+ getAllAuthoritiesCacheForAccount ,
89 getAllAuthoritiesCacheKeys ,
910} from "./utils/authoritiesCache" ;
1011import {
@@ -15,7 +16,7 @@ import {
1516} from "./middlewares" ;
1617import { HealthCheckResponse } from "./types" ;
1718import configuration from "./config" ;
18- import { AUTHORITIES } from "./authorities" ;
19+ import { AUTHORITIES , getAccountAuthorities } from "./authorities" ;
1920
2021export function handleRoutes ( app : Express ) {
2122 app . get ( "/" , ( req : Request , res : Response ) => {
@@ -64,6 +65,7 @@ export function handleRoutes(app: Express) {
6465 return res . status ( statusCode ) . json ( result ) ;
6566 } ) ;
6667
68+ // Login route
6769 app . post ( "/api/token" , async ( req : Request , res : Response ) => {
6870 const { email, password } = req . body ;
6971
@@ -88,29 +90,28 @@ export function handleRoutes(app: Express) {
8890 res . json ( { token } ) ;
8991 } ) ;
9092
91- app . get ( "/api/token/verify" , ( req : Request , res : Response ) => {
92- const token = req . headers . authorization ?. split ( " " ) [ 1 ] ; // Bearer token
93-
94- if ( ! token ) {
95- return res . status ( 401 ) . json ( { message : "Token is missing" } ) ;
96- }
97-
98- try {
99- const decoded = verifyToken ( token ) ;
100-
101- res . json ( { message : "Access granted" , data : decoded } ) ;
102- } catch ( err ) {
103- res . status ( 401 ) . json ( { message : "Invalid token" } ) ;
93+ app . get (
94+ "/api/token/verify" ,
95+ extractJwt ,
96+ requireJwt ,
97+ ( req : Request , res : Response ) => {
98+ res . json ( { message : "Token is valid" } ) ;
10499 }
105- } ) ;
100+ ) ;
106101
102+ // extract my authorities
107103 app . get (
108104 "/api/token/authorities" ,
109105 extractJwt ,
110106 requireJwt ,
111- extractAuthorities ( false ) ,
112107 async ( req : Request , res : Response ) => {
113- res . json ( { authorities : res . locals . authorities } ) ;
108+ const { accountId } = res . locals ;
109+
110+ const scope = req . query . scope as string ;
111+
112+ const authorities = await getAccountAuthorities ( accountId , scope ) ;
113+
114+ res . json ( { authorities } ) ;
114115 }
115116 ) ;
116117
@@ -121,19 +122,23 @@ export function handleRoutes(app: Express) {
121122 extractAuthorities ( true ) ,
122123 requireAuthority ( AUTHORITIES [ "view_account_cache" ] ) ,
123124 async ( req , res ) => {
124- const { accountId } = req . query ;
125-
126- if ( ! accountId ) {
127- return res . status ( 400 ) . json ( { message : "Account ID is required" } ) ;
128- }
129-
130125 const authoritiesAccountsIds = getAllAuthoritiesCacheKeys ( ) ;
126+
131127 return res . json ( {
132128 authoritiesAccountsIds,
133129 } ) ;
134130 }
135131 ) ;
136132
133+ app . get ( "/api/token/authorities/cache/:accountId" , async ( req , res ) => {
134+ const { accountId } = req . params ;
135+
136+ const authorities = getAllAuthoritiesCacheForAccount ( accountId ) ;
137+ return res . json ( {
138+ authorities,
139+ } ) ;
140+ } ) ;
141+
137142 app . delete (
138143 "/api/token/authorities/cache/:accountId" ,
139144 extractJwt ,
0 commit comments