MCPcopy Create free account
hub / github.com/TryCatchLearn/Overflow / jwt

Function jwt

webapp/src/auth.ts:15–72  ·  view source on GitHub ↗
({token, account})

Source from the content-addressed store, hash-verified

13 })],
14 callbacks: {
15 async jwt({token, account}) {
16 const now = Math.floor(Date.now() / 1000);
17
18 if (account && account.access_token && account.refresh_token) {
19 const res = await fetch(apiConfig.baseUrl + '/profiles/me', {
20 headers: {
21 Authorization: `Bearer ${account.access_token}`,
22 }
23 });
24
25 if (res.ok) {
26 token.user = await res.json();
27 } else {
28 console.error('Failed to fetch user profile: ', await res.text())
29 }
30
31 token.accessToken = account.access_token
32 token.refreshToken = account.refresh_token;
33 token.accessTokenExpires = now + account.expires_in!;
34 token.error = undefined;
35 return token;
36 }
37
38 // if access token is still valid then return it
39 if (token.accessTokenExpires && now < token.accessTokenExpires) {
40 return token;
41 }
42
43 try {
44 const response = await fetch(`${authConfig.kcInternal}/protocol/openid-connect/token`, {
45 method: 'POST',
46 headers: {'Content-Type': 'application/x-www-form-urlencoded'},
47 body: new URLSearchParams({
48 grant_type: 'refresh_token',
49 client_id: authConfig.kcClientId,
50 client_secret: authConfig.kcSecret,
51 refresh_token: token.refreshToken as string,
52 })
53 })
54
55 const refreshed = await response.json();
56
57 if (!response.ok) {
58 console.log('Failed to refresh token', refreshed);
59 token.error = 'RefreshAccessTokenError';
60 return token;
61 }
62
63 token.accessToken = refreshed.access_token
64 token.refreshToken = refreshed.refresh_token;
65 token.accessTokenExpires = now + refreshed.expires_in!;
66 } catch (e) {
67 console.log('Failed to refresh token', e);
68 token.error = 'RefreshAccessTokenError';
69 }
70
71 return token;
72 },

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected