@@ -54,6 +54,16 @@ export class LoginHelper {
5454
5555 await fs . mkdir ( path . dirname ( credentialsPath ) , { recursive : true } ) ;
5656 await fs . writeFile ( credentialsPath , JSON . stringify ( { accessToken } ) ) ;
57+
58+ this . instance . isLoggedIn = true ;
59+ this . instance . credentials = LoginHelper . decodeToken ( accessToken ) ;
60+ }
61+
62+ static async logout ( ) {
63+ try {
64+ const credentialsPath = path . join ( os . homedir ( ) , '.codify' , 'credentials.json' ) ;
65+ await fs . rm ( credentialsPath ) ;
66+ } catch { }
5767 }
5868
5969 private static async read ( ) : Promise < Credentials | undefined > {
@@ -63,14 +73,7 @@ export class LoginHelper {
6373 const { accessToken } = JSON . parse ( credentialsStr ) ;
6474
6575 await LoginHelper . verifyProjectJWT ( accessToken ) ;
66- const decoded = decodeJwt ( accessToken ) ;
67-
68- return {
69- accessToken,
70- email : decoded . email as string ,
71- userId : decoded . sub ! ,
72- expiry : decoded . exp ! ,
73- }
76+ return LoginHelper . decodeToken ( accessToken ) ;
7477 } catch {
7578 return undefined ;
7679 }
@@ -79,4 +82,15 @@ export class LoginHelper {
7982 private static async verifyProjectJWT ( jwt : string ) {
8083 return jwtVerify ( jwt , PROJECT_JWKS )
8184 }
85+
86+ private static decodeToken ( jwt : string ) : Credentials {
87+ const decoded = decodeJwt ( jwt ) ;
88+
89+ return {
90+ accessToken : jwt ,
91+ email : decoded . email as string ,
92+ userId : decoded . sub ! ,
93+ expiry : decoded . exp ! ,
94+ }
95+ }
8296}
0 commit comments