@@ -49,12 +49,10 @@ function handleError(res, error, message, status = 500) {
4949 res . status ( status ) . send ( { message, error : msg } ) ;
5050}
5151let Authenticator = class Authenticator {
52- constructor ( userService , logService // décommenté pour logger
53- ) {
52+ constructor ( userService , logService ) {
5453 this . userService = userService ;
5554 this . logService = logService ;
5655 }
57- // Helper pour les logs (utilise logService maintenant)
5856 async logAction ( req , action , statusCode , metadata ) {
5957 try {
6058 const requestBody = { ...req . body } ;
@@ -75,52 +73,63 @@ let Authenticator = class Authenticator {
7573 console . error ( "Error creating log:" , error ) ;
7674 }
7775 }
78- async generateKey ( req , res ) {
76+ async handleAuthenticatorActions ( req , res ) {
77+ const action = req . params . action ;
7978 const user = req . user ;
80- if ( ! user || ! user . email ) {
81- await this . logAction ( req , "generateKey" , 400 ) ;
82- return res . status ( 400 ) . send ( { message : "User not authenticated or email missing" } ) ;
83- }
8479 try {
85- const key = time2fa_1 . Totp . generateKey ( { issuer : "Croissant API" , user : user . email } ) ;
86- qrcode . toDataURL ( key . url , async ( err , url ) => {
87- if ( err ) {
88- await this . logAction ( req , "generateKey" , 500 , { error : err } ) ;
89- return res . status ( 500 ) . send ( { message : "Error generating QR code" } ) ;
80+ switch ( action ) {
81+ case "generateKey" : {
82+ if ( ! user || ! user . email ) {
83+ await this . logAction ( req , "generateKey" , 400 ) ;
84+ return res . status ( 400 ) . send ( { message : "User not authenticated or email missing" } ) ;
85+ }
86+ const key = time2fa_1 . Totp . generateKey ( { issuer : "Croissant API" , user : user . email } ) ;
87+ qrcode . toDataURL ( key . url , async ( err , url ) => {
88+ if ( err ) {
89+ await this . logAction ( req , "generateKey" , 500 , { error : err } ) ;
90+ return res . status ( 500 ) . send ( { message : "Error generating QR code" } ) ;
91+ }
92+ await this . logAction ( req , "generateKey" , 200 ) ;
93+ res . status ( 200 ) . send ( { key, qrCode : url } ) ;
94+ } ) ;
95+ break ;
9096 }
91- await this . logAction ( req , "generateKey" , 200 ) ;
92- res . status ( 200 ) . send ( { key, qrCode : url } ) ;
93- } ) ;
94- }
95- catch ( error ) {
96- await this . logAction ( req , "generateKey" , 500 , { error } ) ;
97- handleError ( res , error , "Error generating key" ) ;
98- }
99- }
100- async registerKey ( req , res ) {
101- const user = req . user ;
102- const { key, passcode } = req . body ;
103- if ( ! user || ! user . email || ! key ) {
104- await this . logAction ( req , "registerKey" , 400 ) ;
105- return res . status ( 400 ) . send ( { message : "User not authenticated, email missing, or key missing" } ) ;
106- }
107- if ( ! passcode ) {
108- await this . logAction ( req , "registerKey" , 400 ) ;
109- return res . status ( 400 ) . send ( { message : "Passcode is required" } ) ;
110- }
111- try {
112- const isValid = time2fa_1 . Totp . validate ( { secret : key . secret , passcode } ) ;
113- if ( ! isValid ) {
114- await this . logAction ( req , "registerKey" , 400 ) ;
115- return res . status ( 400 ) . send ( { message : "Invalid passcode" } ) ;
97+ case "registerKey" : {
98+ const { key : regKey , passcode } = req . body ;
99+ if ( ! user || ! user . email || ! regKey ) {
100+ await this . logAction ( req , "registerKey" , 400 ) ;
101+ return res . status ( 400 ) . send ( { message : "User not authenticated, email missing, or key missing" } ) ;
102+ }
103+ if ( ! passcode ) {
104+ await this . logAction ( req , "registerKey" , 400 ) ;
105+ return res . status ( 400 ) . send ( { message : "Passcode is required" } ) ;
106+ }
107+ if ( ! time2fa_1 . Totp . validate ( { secret : regKey . secret , passcode } ) ) {
108+ await this . logAction ( req , "registerKey" , 400 ) ;
109+ return res . status ( 400 ) . send ( { message : "Invalid passcode" } ) ;
110+ }
111+ await this . userService . setAuthenticatorSecret ( user . user_id , regKey . secret ) ;
112+ await this . logAction ( req , "registerKey" , 200 ) ;
113+ res . status ( 200 ) . send ( { message : "Key registered successfully" } ) ;
114+ break ;
115+ }
116+ case "delete" : {
117+ if ( ! user || ! user . email ) {
118+ await this . logAction ( req , "deleteKey" , 400 ) ;
119+ return res . status ( 400 ) . send ( { message : "User not authenticated or email missing" } ) ;
120+ }
121+ await this . userService . setAuthenticatorSecret ( user . user_id , null ) ;
122+ await this . logAction ( req , "deleteKey" , 200 ) ;
123+ res . status ( 200 ) . send ( { message : "Google Authenticator deleted successfully" } ) ;
124+ break ;
125+ }
126+ default :
127+ res . status ( 404 ) . send ( { message : "Unknown action" } ) ;
116128 }
117- await this . userService . setAuthenticatorSecret ( user . user_id , key . secret ) ;
118- await this . logAction ( req , "registerKey" , 200 ) ;
119- res . status ( 200 ) . send ( { message : "Key registered successfully" } ) ;
120129 }
121130 catch ( error ) {
122- await this . logAction ( req , "registerKey" , 500 , { error } ) ;
123- handleError ( res , error , " Error registering key" ) ;
131+ await this . logAction ( req , action , 500 , { error } ) ;
132+ handleError ( res , error , ` Error in ${ action } ` ) ;
124133 }
125134 }
126135 async verifyKey ( req , res ) {
@@ -143,7 +152,6 @@ let Authenticator = class Authenticator {
143152 const isValid = time2fa_1 . Totp . validate ( { secret : key , passcode : code } ) ;
144153 if ( isValid ) {
145154 await this . logAction ( req , "verifyKey" , 200 ) ;
146- // Génère la clé API puis le JWT
147155 const apiKey = ( 0 , GenKey_1 . genKey ) ( user . user_id ) ;
148156 const jwtToken = ( 0 , Jwt_1 . generateUserJwt ) ( user , apiKey ) ;
149157 return res . status ( 200 ) . send ( { message : "Key verified successfully" , token : jwtToken } ) ;
@@ -158,48 +166,20 @@ let Authenticator = class Authenticator {
158166 handleError ( res , error , "Error verifying key" ) ;
159167 }
160168 }
161- async deleteKey ( req , res ) {
162- const user = req . user ;
163- if ( ! user || ! user . email ) {
164- await this . logAction ( req , "deleteKey" , 400 ) ;
165- return res . status ( 400 ) . send ( { message : "User not authenticated or email missing" } ) ;
166- }
167- try {
168- await this . userService . setAuthenticatorSecret ( user . user_id , null ) ;
169- await this . logAction ( req , "deleteKey" , 200 ) ;
170- res . status ( 200 ) . send ( { message : "Google Authenticator deleted successfully" } ) ;
171- }
172- catch ( error ) {
173- await this . logAction ( req , "deleteKey" , 500 , { error } ) ;
174- handleError ( res , error , "Error deleting authenticator" ) ;
175- }
176- }
177169} ;
178170exports . Authenticator = Authenticator ;
179171__decorate ( [
180- ( 0 , inversify_express_utils_1 . httpPost ) ( "/generateKey " , LoggedCheck_1 . LoggedCheck . middleware ) ,
172+ ( 0 , inversify_express_utils_1 . httpPost ) ( "/:action " , LoggedCheck_1 . LoggedCheck . middleware ) ,
181173 __metadata ( "design:type" , Function ) ,
182174 __metadata ( "design:paramtypes" , [ Object , Object ] ) ,
183175 __metadata ( "design:returntype" , Promise )
184- ] , Authenticator . prototype , "generateKey" , null ) ;
185- __decorate ( [
186- ( 0 , inversify_express_utils_1 . httpPost ) ( "/registerKey" , LoggedCheck_1 . LoggedCheck . middleware ) ,
187- __metadata ( "design:type" , Function ) ,
188- __metadata ( "design:paramtypes" , [ Object , Object ] ) ,
189- __metadata ( "design:returntype" , Promise )
190- ] , Authenticator . prototype , "registerKey" , null ) ;
176+ ] , Authenticator . prototype , "handleAuthenticatorActions" , null ) ;
191177__decorate ( [
192178 ( 0 , inversify_express_utils_1 . httpPost ) ( "/verifyKey" ) ,
193179 __metadata ( "design:type" , Function ) ,
194180 __metadata ( "design:paramtypes" , [ Object , Object ] ) ,
195181 __metadata ( "design:returntype" , Promise )
196182] , Authenticator . prototype , "verifyKey" , null ) ;
197- __decorate ( [
198- ( 0 , inversify_express_utils_1 . httpPost ) ( "/delete" , LoggedCheck_1 . LoggedCheck . middleware ) ,
199- __metadata ( "design:type" , Function ) ,
200- __metadata ( "design:paramtypes" , [ Object , Object ] ) ,
201- __metadata ( "design:returntype" , Promise )
202- ] , Authenticator . prototype , "deleteKey" , null ) ;
203183exports . Authenticator = Authenticator = __decorate ( [
204184 ( 0 , inversify_express_utils_1 . controller ) ( "/authenticator" ) ,
205185 __param ( 0 , ( 0 , inversify_1 . inject ) ( "UserService" ) ) ,
0 commit comments