@@ -85,103 +85,89 @@ private function generateGlobalAccessToken(): AccessToken
8585 return $ obj ;
8686 }
8787
88- private function refreshToken ($ refreshToken , $ organization_slug ): ?AccessToken
89- {
90- try {
91- $ response = $ this ->client ->request ('POST ' , $ this ->apiAuthUrl , [
92- 'form_params ' => [
93- 'grant_type ' => 'refresh_token ' ,
94- 'refresh_token ' => $ refreshToken ,
95- ],
96- 'headers ' => [
97- 'content-type ' => 'application/x-www-form-urlencoded ' ,
98- 'accept ' => 'application/json ' ,
99- ],
100- ]);
101- } catch (RequestException $ e ) {
102- $ this ->apiLogger ->error ('Erreur lors du refresh token pour ' . $ organization_slug . ': ' . $ e ->getMessage ());
103- if ($ e ->hasResponse ()) {
104- $ statusCode = $ e ->getResponse ()->getStatusCode ();
105- $ this ->apiLogger ->error ('Response status: ' . $ statusCode );
106- $ this ->apiLogger ->error ('Response body: ' . $ e ->getResponse ()->getBody ());
107-
108- // Si le refresh token est invalide (404, 400, 401), on retourne null
109- // pour forcer une nouvelle authentification
110- if (in_array ($ statusCode , [400 , 401 , 404 ])) {
111- $ this ->apiLogger ->warning ('Refresh token invalide ou expiré pour ' . $ organization_slug . '. Nouvelle authentification nécessaire. ' );
112-
113- // Suppression du token invalide de la base de données
114- $ this ->accessTokenRepository ->deleteBySlug ($ organization_slug );
115-
116- return null ;
88+ private function refreshToken ($ refreshToken , $ organization_slug ): ?AccessToken
89+ {
90+ try {
91+ $ response = $ this ->client ->request ('POST ' , $ this ->apiAuthUrl , [
92+ 'form_params ' => [
93+ 'grant_type ' => 'refresh_token ' ,
94+ 'refresh_token ' => $ refreshToken ,
95+ ],
96+ 'headers ' => [
97+ 'content-type ' => 'application/x-www-form-urlencoded ' ,
98+ 'accept ' => 'application/json ' ,
99+ ],
100+ ]);
101+ } catch (RequestException $ e ) {
102+ $ this ->apiLogger ->error ('Erreur lors du refresh token pour ' . $ organization_slug . ': ' . $ e ->getMessage ());
103+ if ($ e ->hasResponse ()) {
104+ $ statusCode = $ e ->getResponse ()->getStatusCode ();
105+ $ this ->apiLogger ->error ('Response status: ' . $ statusCode );
106+ $ this ->apiLogger ->error ('Response body: ' . $ e ->getResponse ()->getBody ());
117107 }
108+ throw new Exception ("Erreur lors du rafraîchissement du token : " . $ e ->getMessage (), 0 , $ e );
109+ } catch (GuzzleException $ e ) {
110+ $ this ->apiLogger ->error ('Erreur Guzzle lors du refresh token pour ' . $ organization_slug . ': ' . $ e ->getMessage ());
111+ throw new Exception ("Erreur de connexion à l'API : " . $ e ->getMessage (), 0 , $ e );
118112 }
119- throw new Exception ("Erreur lors du rafraîchissement du token : " . $ e ->getMessage (), 0 , $ e );
120- } catch (GuzzleException $ e ) {
121- $ this ->apiLogger ->error ('Erreur Guzzle lors du refresh token pour ' . $ organization_slug . ': ' . $ e ->getMessage ());
122- throw new Exception ("Erreur de connexion à l'API : " . $ e ->getMessage (), 0 , $ e );
123- }
124-
125- $ responseData = json_decode ($ response ->getBody (), true );
126113
127- if (json_last_error () !== JSON_ERROR_NONE ) {
128- throw new Exception ("Erreur de décodage JSON : " . json_last_error_msg ());
129- }
114+ $ responseData = json_decode ($ response ->getBody (), true );
130115
131- if (! isset ( $ responseData [ ' access_token ' ]) || ! isset ( $ responseData [ ' refresh_token ' ]) ) {
132- throw new Exception ("Erreur : Les tokens ne sont pas présents dans la réponse. " );
133- }
116+ if (json_last_error () !== JSON_ERROR_NONE ) {
117+ throw new Exception ("Erreur de décodage JSON : " . json_last_error_msg () );
118+ }
134119
135- $ accessTokenExpiresAt = (new DateTime ())->add (new DateInterval ('PT28M ' ));
136- $ refreshTokenExpiresAt = (new DateTime ())->add (new DateInterval ('P28D ' ));
120+ if (!isset ($ responseData ['access_token ' ]) || !isset ($ responseData ['refresh_token ' ])) {
121+ throw new Exception ("Erreur : Les tokens ne sont pas présents dans la réponse. " );
122+ }
137123
138- $ obj = new AccessToken ();
139- $ obj ->access_token = $ responseData ['access_token ' ];
140- $ obj ->refresh_token = $ responseData ['refresh_token ' ];
141- $ obj ->organization_slug = $ organization_slug ;
142- $ obj ->access_token_expires_at = $ accessTokenExpiresAt ;
143- $ obj ->refresh_token_expires_at = $ refreshTokenExpiresAt ;
124+ $ accessTokenExpiresAt = (new DateTime ())->add (new DateInterval ('PT28M ' ));
125+ $ refreshTokenExpiresAt = (new DateTime ())->add (new DateInterval ('P28D ' ));
144126
145- return $ this ->accessTokenRepository ->update ($ obj );
146- }
127+ $ obj = new AccessToken ();
128+ $ obj ->access_token = $ responseData ['access_token ' ];
129+ $ obj ->refresh_token = $ responseData ['refresh_token ' ];
130+ $ obj ->organization_slug = $ organization_slug ;
131+ $ obj ->access_token_expires_at = $ accessTokenExpiresAt ;
132+ $ obj ->refresh_token_expires_at = $ refreshTokenExpiresAt ;
147133
134+ return $ this ->accessTokenRepository ->update (
135+ $ obj
136+ );
137+ }
148138
149- public function getAccessTokensAndRefreshIfNecessary ($ organization_slug ): ?AccessToken
150- {
151- $ tokenData = $ this ->accessTokenRepository ->selectBySlug ($ organization_slug );
139+ public function getAccessTokensAndRefreshIfNecessary ($ organization_slug ): ?AccessToken
140+ {
141+ $ tokenData = $ this ->accessTokenRepository ->selectBySlug ($ organization_slug );
152142
153- if ($ tokenData == null ) {
154- if ($ organization_slug == null ) {
155- $ tokenData = $ this ->generateGlobalAccessToken ();
156- return $ tokenData ;
143+ if ($ tokenData == null ) {
144+ if ($ organization_slug == null ) {
145+ $ tokenData = $ this ->generateGlobalAccessToken ();
146+ return $ tokenData ;
147+ } else {
148+ return null ;
149+ }
157150 } else {
158- return null ;
159- }
160- } else {
161- $ expiry = new DateTime ($ tokenData ->access_token_expires_at );
162- $ now = new DateTime ();
151+
152+ $ expiry = new DateTime ($ tokenData ->access_token_expires_at );
153+ $ now = new DateTime ();
163154
164- if ($ expiry < $ now ) {
165- $ this ->apiLogger ->info ('Current time: ' . $ now ->format ('Y-m-d H:i:s ' ));
166- $ this ->apiLogger ->info ('Access token expiry time: ' . $ expiry ->format ('Y-m-d H:i:s ' ));
167- $ this ->apiLogger ->warning ('Access token expired for organization_slug: ' . $ organization_slug );
155+ if ($ expiry < $ now ) {
168156
169- $ tokenData = $ this ->refreshToken ($ tokenData ->refresh_token , $ organization_slug );
157+ $ this ->apiLogger ->info ('Current time: ' . $ now ->format ('Y-m-d H:i:s ' ));
158+ $ this ->apiLogger ->info ('Access token expiry time: ' . $ expiry ->format ('Y-m-d H:i:s ' ));
159+ $ this ->apiLogger ->error ('Access token expired for organization_slug: ' . $ organization_slug );
170160
171- if ($ tokenData === null ) {
172- // Le refresh token a échoué, on retourne null pour forcer une nouvelle authentification
173- $ this ->apiLogger ->warning ('Refresh token failed. Returning null to trigger re-authentication. ' );
174- return null ;
175- }
161+ $ tokenData = $ this ->refreshToken ($ tokenData ->refresh_token , $ organization_slug );
176162
177- $ this ->apiLogger ->info ('Token data after refresh: ' . json_encode ($ tokenData ));
163+ $ this ->apiLogger ->info ('Token data refreshed for organization_slug: ' . $ organization_slug );
164+
165+ return $ tokenData ;
166+ }
178167
179168 return $ tokenData ;
180169 }
181-
182- return $ tokenData ;
183170 }
184- }
185171
186172 public function generateAuthorizationUrl ($ organizationSlug )
187173 {
0 commit comments