@driveflux/auth 4.0.77 → 4.0.79

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/dist/AuthProvider.d.ts +1 -0
  2. package/dist/AuthProvider.d.ts.map +1 -0
  3. package/dist/AuthProvider.js +76 -59
  4. package/dist/ability.d.ts +1 -0
  5. package/dist/ability.d.ts.map +1 -0
  6. package/dist/authorization/constants.d.ts +2 -1
  7. package/dist/authorization/constants.d.ts.map +1 -0
  8. package/dist/authorization/constants.js +45 -24
  9. package/dist/authorization/define.d.ts +1 -0
  10. package/dist/authorization/define.d.ts.map +1 -0
  11. package/dist/authorization/define.js +57 -28
  12. package/dist/authorization/fields/index.d.ts +1 -0
  13. package/dist/authorization/fields/index.d.ts.map +1 -0
  14. package/dist/authorization/fields/index.js +4 -7
  15. package/dist/authorization/helpers.d.ts +1 -0
  16. package/dist/authorization/helpers.d.ts.map +1 -0
  17. package/dist/authorization/helpers.js +10 -8
  18. package/dist/authorization/index.d.ts +1 -0
  19. package/dist/authorization/index.d.ts.map +1 -0
  20. package/dist/authorization/index.js +6 -6
  21. package/dist/authorization/permissions-list.d.ts +2 -0
  22. package/dist/authorization/permissions-list.d.ts.map +1 -0
  23. package/dist/authorization/permissions-list.js +6 -7
  24. package/dist/authorization/quick.d.ts +1 -0
  25. package/dist/authorization/quick.d.ts.map +1 -0
  26. package/dist/authorization/quick.js +1 -1
  27. package/dist/authorization/roles/admin/business-development-executive.d.ts +1 -0
  28. package/dist/authorization/roles/admin/business-development-executive.d.ts.map +1 -0
  29. package/dist/authorization/roles/admin/business-development-executive.js +20 -7
  30. package/dist/authorization/roles/admin/ceo.d.ts +1 -0
  31. package/dist/authorization/roles/admin/ceo.d.ts.map +1 -0
  32. package/dist/authorization/roles/admin/ceo.js +4 -2
  33. package/dist/authorization/roles/admin/common.d.ts +1 -0
  34. package/dist/authorization/roles/admin/common.d.ts.map +1 -0
  35. package/dist/authorization/roles/admin/common.js +7 -3
  36. package/dist/authorization/roles/admin/concierge.d.ts +1 -0
  37. package/dist/authorization/roles/admin/concierge.d.ts.map +1 -0
  38. package/dist/authorization/roles/admin/concierge.js +35 -10
  39. package/dist/authorization/roles/admin/customer-success-executive.d.ts +1 -0
  40. package/dist/authorization/roles/admin/customer-success-executive.d.ts.map +1 -0
  41. package/dist/authorization/roles/admin/customer-success-executive.js +40 -10
  42. package/dist/authorization/roles/admin/data-analyst.d.ts +1 -0
  43. package/dist/authorization/roles/admin/data-analyst.d.ts.map +1 -0
  44. package/dist/authorization/roles/admin/data-analyst.js +7 -4
  45. package/dist/authorization/roles/admin/designer.d.ts +1 -0
  46. package/dist/authorization/roles/admin/designer.d.ts.map +1 -0
  47. package/dist/authorization/roles/admin/designer.js +7 -4
  48. package/dist/authorization/roles/admin/engineer.d.ts +1 -0
  49. package/dist/authorization/roles/admin/engineer.d.ts.map +1 -0
  50. package/dist/authorization/roles/admin/engineer.js +7 -4
  51. package/dist/authorization/roles/admin/finance-executive.d.ts +1 -0
  52. package/dist/authorization/roles/admin/finance-executive.d.ts.map +1 -0
  53. package/dist/authorization/roles/admin/finance-executive.js +11 -4
  54. package/dist/authorization/roles/admin/head-of-business-development.d.ts +1 -0
  55. package/dist/authorization/roles/admin/head-of-business-development.d.ts.map +1 -0
  56. package/dist/authorization/roles/admin/head-of-business-development.js +14 -4
  57. package/dist/authorization/roles/admin/head-of-data-analytics.d.ts +1 -0
  58. package/dist/authorization/roles/admin/head-of-data-analytics.d.ts.map +1 -0
  59. package/dist/authorization/roles/admin/head-of-data-analytics.js +14 -4
  60. package/dist/authorization/roles/admin/head-of-engineering.d.ts +1 -0
  61. package/dist/authorization/roles/admin/head-of-engineering.d.ts.map +1 -0
  62. package/dist/authorization/roles/admin/head-of-engineering.js +17 -6
  63. package/dist/authorization/roles/admin/head-of-finance.d.ts +1 -0
  64. package/dist/authorization/roles/admin/head-of-finance.d.ts.map +1 -0
  65. package/dist/authorization/roles/admin/head-of-finance.js +8 -3
  66. package/dist/authorization/roles/admin/head-of-human-resources.d.ts +1 -0
  67. package/dist/authorization/roles/admin/head-of-human-resources.d.ts.map +1 -0
  68. package/dist/authorization/roles/admin/head-of-human-resources.js +13 -5
  69. package/dist/authorization/roles/admin/head-of-marketing.d.ts +1 -0
  70. package/dist/authorization/roles/admin/head-of-marketing.d.ts.map +1 -0
  71. package/dist/authorization/roles/admin/head-of-marketing.js +17 -5
  72. package/dist/authorization/roles/admin/head-of-operations.d.ts +1 -0
  73. package/dist/authorization/roles/admin/head-of-operations.d.ts.map +1 -0
  74. package/dist/authorization/roles/admin/head-of-operations.js +8 -3
  75. package/dist/authorization/roles/admin/head-of-product.d.ts +1 -0
  76. package/dist/authorization/roles/admin/head-of-product.d.ts.map +1 -0
  77. package/dist/authorization/roles/admin/head-of-product.js +17 -6
  78. package/dist/authorization/roles/admin/head-of-sales.d.ts +1 -0
  79. package/dist/authorization/roles/admin/head-of-sales.d.ts.map +1 -0
  80. package/dist/authorization/roles/admin/head-of-sales.js +17 -5
  81. package/dist/authorization/roles/admin/human-resources-executive.d.ts +1 -0
  82. package/dist/authorization/roles/admin/human-resources-executive.d.ts.map +1 -0
  83. package/dist/authorization/roles/admin/human-resources-executive.js +12 -5
  84. package/dist/authorization/roles/admin/marketing-executive.d.ts +1 -0
  85. package/dist/authorization/roles/admin/marketing-executive.d.ts.map +1 -0
  86. package/dist/authorization/roles/admin/marketing-executive.js +7 -4
  87. package/dist/authorization/roles/admin/product-manager.d.ts +1 -0
  88. package/dist/authorization/roles/admin/product-manager.d.ts.map +1 -0
  89. package/dist/authorization/roles/admin/product-manager.js +7 -4
  90. package/dist/authorization/roles/admin/sales-executive.d.ts +1 -0
  91. package/dist/authorization/roles/admin/sales-executive.d.ts.map +1 -0
  92. package/dist/authorization/roles/admin/sales-executive.js +24 -8
  93. package/dist/authorization/roles/consumer/business-admin.d.ts +1 -0
  94. package/dist/authorization/roles/consumer/business-admin.d.ts.map +1 -0
  95. package/dist/authorization/roles/consumer/business-admin.js +19 -6
  96. package/dist/authorization/roles/consumer/business-user.d.ts +1 -0
  97. package/dist/authorization/roles/consumer/business-user.d.ts.map +1 -0
  98. package/dist/authorization/roles/consumer/business-user.js +18 -6
  99. package/dist/authorization/roles/consumer/member.d.ts +1 -0
  100. package/dist/authorization/roles/consumer/member.d.ts.map +1 -0
  101. package/dist/authorization/roles/consumer/member.js +16 -6
  102. package/dist/authorization/types.d.ts +1 -0
  103. package/dist/authorization/types.d.ts.map +1 -0
  104. package/dist/authorization/types.js +1 -1
  105. package/dist/authorization/update-user-permissions.d.ts +1 -0
  106. package/dist/authorization/update-user-permissions.d.ts.map +1 -0
  107. package/dist/authorization/update-user-permissions.js +22 -15
  108. package/dist/authorization/utils.d.ts +1 -0
  109. package/dist/authorization/utils.d.ts.map +1 -0
  110. package/dist/authorization/utils.js +26 -11
  111. package/dist/constants.d.ts +1 -0
  112. package/dist/constants.d.ts.map +1 -0
  113. package/dist/constants.js +2 -4
  114. package/dist/context.d.ts +1 -0
  115. package/dist/context.d.ts.map +1 -0
  116. package/dist/context.js +8 -9
  117. package/dist/default.d.ts +1 -0
  118. package/dist/default.d.ts.map +1 -0
  119. package/dist/default.js +1 -1
  120. package/dist/index.d.ts +1 -0
  121. package/dist/index.d.ts.map +1 -0
  122. package/dist/providers.d.ts +1 -0
  123. package/dist/providers.d.ts.map +1 -0
  124. package/dist/react.d.ts +1 -0
  125. package/dist/react.d.ts.map +1 -0
  126. package/dist/server/authenticate-user.d.ts +1 -0
  127. package/dist/server/authenticate-user.d.ts.map +1 -0
  128. package/dist/server/authenticate-user.js +11 -7
  129. package/dist/server/cors.d.ts +1 -0
  130. package/dist/server/cors.d.ts.map +1 -0
  131. package/dist/server/cors.js +23 -12
  132. package/dist/server/credentials-provider.d.ts +1 -0
  133. package/dist/server/credentials-provider.d.ts.map +1 -0
  134. package/dist/server/credentials-provider.js +2 -2
  135. package/dist/server/index.d.ts +1 -0
  136. package/dist/server/index.d.ts.map +1 -0
  137. package/dist/server/next-auth.d.ts +16 -15
  138. package/dist/server/next-auth.d.ts.map +1 -0
  139. package/dist/server/next-auth.js +104 -109
  140. package/dist/server/prisma-adapter.d.ts +1 -0
  141. package/dist/server/prisma-adapter.d.ts.map +1 -0
  142. package/dist/server/prisma-adapter.js +88 -52
  143. package/dist/server/types.d.ts +1 -0
  144. package/dist/server/types.d.ts.map +1 -0
  145. package/dist/server/verfiy-token.d.ts +1 -0
  146. package/dist/server/verfiy-token.d.ts.map +1 -0
  147. package/dist/server/verfiy-token.js +39 -24
  148. package/dist/translations.d.ts +1 -0
  149. package/dist/translations.d.ts.map +1 -0
  150. package/dist/translations.js +4 -4
  151. package/dist/types.d.ts +1 -0
  152. package/dist/types.d.ts.map +1 -0
  153. package/dist/use-auth.d.ts +1 -0
  154. package/dist/use-auth.d.ts.map +1 -0
  155. package/dist/use-auth.js +1 -1
  156. package/dist/use-session.d.ts +1 -0
  157. package/dist/use-session.d.ts.map +1 -0
  158. package/dist/use-session.js +1 -1
  159. package/package.json +1 -1
@@ -8,7 +8,7 @@ import { nanoid } from 'nanoid';
8
8
  import CredentialsProvider from 'next-auth/providers/credentials';
9
9
  import FacebookProvider from 'next-auth/providers/facebook';
10
10
  import GoogleProvider from 'next-auth/providers/google';
11
- import { AUTH_COOKIE_CALLBACK_URL, AUTH_COOKIE_CSRF_TOKEN, AUTH_COOKIE_NONCE, AUTH_COOKIE_PKCE_CODE_VERIFIER, AUTH_COOKIE_SESSION_TOKEN, AUTH_COOKIE_STATE, } from '../constants.js';
11
+ import { AUTH_COOKIE_CALLBACK_URL, AUTH_COOKIE_CSRF_TOKEN, AUTH_COOKIE_NONCE, AUTH_COOKIE_PKCE_CODE_VERIFIER, AUTH_COOKIE_SESSION_TOKEN, AUTH_COOKIE_STATE } from '../constants.js';
12
12
  import { extractDefault } from '../default.js';
13
13
  import { translations } from '../translations.js';
14
14
  import { authenticateUser } from './authenticate-user.js';
@@ -21,80 +21,79 @@ const nextAuthUrl = process.env.NEXTAUTH_URL;
21
21
  if (!nextAuthUrl) {
22
22
  throw new Error('NEXTAUTH_URL is not set');
23
23
  }
24
- export const generateSessionToken = async (user) => {
24
+ export const generateSessionToken = async (user)=>{
25
25
  const secret = new TextEncoder().encode(config.auth.jwtSecret);
26
26
  const alg = 'HS256';
27
27
  const token = await new SignJWT({
28
- roles: user.groups,
29
- })
30
- .setProtectedHeader({ alg })
31
- .setIssuedAt()
32
- .setSubject(user.id)
33
- .setIssuer('flux.website')
34
- .setAudience('flux.website')
35
- .sign(secret);
28
+ roles: user.groups
29
+ }).setProtectedHeader({
30
+ alg
31
+ }).setIssuedAt().setSubject(user.id).setIssuer('flux.website').setAudience('flux.website').sign(secret);
36
32
  return token.toString();
37
33
  };
38
- export const getCredentialsOptions = () => {
34
+ export const getCredentialsOptions = ()=>{
39
35
  return {
40
36
  name: 'Credentials',
41
37
  credentials: {
42
- login: { label: translations.email, type: 'text' },
43
- password: { label: translations.password, type: 'password' },
38
+ login: {
39
+ label: translations.email,
40
+ type: 'text'
41
+ },
42
+ password: {
43
+ label: translations.password,
44
+ type: 'password'
45
+ }
44
46
  },
45
- async authorize(credentials) {
47
+ async authorize (credentials) {
46
48
  if (!credentials) {
47
49
  return null;
48
50
  }
49
51
  const authResult = await authenticateUser(credentials);
50
52
  return authResult.ok ? authResult.val : null;
51
- },
53
+ }
52
54
  };
53
55
  };
54
56
  export const authOptions = {
55
57
  adapter,
56
58
  providers: [
57
- ...(config.auth.google
58
- ? [
59
- extractDefault(GoogleProvider)({
60
- ...config.auth.google,
61
- allowDangerousEmailAccountLinking: true,
62
- }),
63
- ]
64
- : []),
65
- ...(config.auth.facebook
66
- ? [
67
- extractDefault(FacebookProvider)({
68
- ...config.auth.facebook,
69
- allowDangerousEmailAccountLinking: true,
70
- }),
71
- ]
72
- : []),
73
- extractDefault(CredentialsProvider)(getCredentialsOptions()),
59
+ ...config.auth.google ? [
60
+ extractDefault(GoogleProvider)({
61
+ ...config.auth.google,
62
+ allowDangerousEmailAccountLinking: true
63
+ })
64
+ ] : [],
65
+ ...config.auth.facebook ? [
66
+ extractDefault(FacebookProvider)({
67
+ ...config.auth.facebook,
68
+ allowDangerousEmailAccountLinking: true
69
+ })
70
+ ] : [],
71
+ extractDefault(CredentialsProvider)(getCredentialsOptions())
74
72
  ],
75
73
  callbacks: {
76
- async signIn({ account, profile }) {
77
- const processName = (profile) => {
74
+ async signIn ({ account, profile }) {
75
+ const processName = (profile)=>{
78
76
  if (profile?.given_name || profile?.family_name) {
79
77
  return {
80
78
  firstName: profile?.given_name || '',
81
- lastName: profile?.family_name || '',
79
+ lastName: profile?.family_name || ''
82
80
  };
83
81
  }
84
82
  if (!profile?.name) {
85
83
  return {
86
84
  firstName: '',
87
- lastName: '',
85
+ lastName: ''
88
86
  };
89
87
  }
90
- const r = (str) => str.replace(/\s+/g, ' ').trim();
88
+ const r = (str)=>str.replace(/\s+/g, ' ').trim();
91
89
  const names = profile?.name.trim();
92
90
  const nameSegments = names.split(' ');
93
- const firstName = r(nameSegments
94
- .filter((_s, i) => i !== nameSegments?.length - 1)
95
- .join(' '));
91
+ const firstName = r(nameSegments.filter((_s, i)=>i !== nameSegments?.length - 1).join(' '));
96
92
  const lastName = r(nameSegments?.[nameSegments?.length - 1]);
97
- return { firstName, lastName };
93
+ return {
94
+ firstName,
95
+ lastName
96
+ };
98
97
  };
99
98
  if (account?.provider === 'google') {
100
99
  if (!profile?.email) {
@@ -105,7 +104,7 @@ export const authOptions = {
105
104
  // const password = await bcrypt.hash(nanoid(), nanoid())
106
105
  await prisma.user.upsert({
107
106
  where: {
108
- email: profile.email,
107
+ email: profile.email
109
108
  },
110
109
  create: {
111
110
  id: generateId('User'),
@@ -115,13 +114,12 @@ export const authOptions = {
115
114
  password,
116
115
  registrationComplete: false,
117
116
  metadata: {
118
- signupProvider: 'google',
119
- },
117
+ signupProvider: 'google'
118
+ }
120
119
  },
121
- update: {},
120
+ update: {}
122
121
  });
123
- }
124
- else if (account?.provider === 'facebook') {
122
+ } else if (account?.provider === 'facebook') {
125
123
  if (!profile?.email) {
126
124
  throw new Error('Unauthenticated');
127
125
  }
@@ -129,7 +127,7 @@ export const authOptions = {
129
127
  const password = `${nanoid()}-${nanoid()}`;
130
128
  await prisma.user.upsert({
131
129
  where: {
132
- email: profile.email,
130
+ email: profile.email
133
131
  },
134
132
  create: {
135
133
  id: generateId('User'),
@@ -139,46 +137,43 @@ export const authOptions = {
139
137
  password,
140
138
  registrationComplete: false,
141
139
  metadata: {
142
- signupProvider: 'facebook',
143
- },
140
+ signupProvider: 'facebook'
141
+ }
144
142
  },
145
- update: {},
143
+ update: {}
146
144
  });
147
145
  }
148
146
  return true;
149
147
  },
150
- async session({ session, user, trigger }) {
151
- const { password, permissions, stripeCustomerId, ...newUser } = { ...user };
148
+ async session ({ session, user, trigger }) {
149
+ const { password, permissions, stripeCustomerId, ...newUser } = {
150
+ ...user
151
+ };
152
152
  const finalSession = {
153
153
  user: newUser,
154
154
  expires: new Date(session.expires).toISOString(),
155
155
  id: session.id,
156
- sessionToken: session.sessionToken,
156
+ sessionToken: session.sessionToken
157
157
  };
158
- const decodedToken = session.sessionToken
159
- ? decodeJwt(session.sessionToken)
160
- : null;
158
+ const decodedToken = session.sessionToken ? decodeJwt(session.sessionToken) : null;
161
159
  const tokenRoles = decodedToken?.roles;
162
160
  if (session.sessionToken) {
163
- if (trigger === 'update' ||
164
- !tokenRoles ||
165
- !areArraysSimilar(tokenRoles, user.groups)) {
161
+ if (trigger === 'update' || !tokenRoles || !areArraysSimilar(tokenRoles, user.groups)) {
166
162
  const newSessionToken = await generateSessionToken(user);
167
163
  // We can't call the update session from the patch because it searches by sessionToken and not by ID
168
164
  try {
169
165
  await prisma.session.update({
170
166
  where: {
171
- sessionToken: session.sessionToken,
167
+ sessionToken: session.sessionToken
172
168
  },
173
169
  data: {
174
- sessionToken: newSessionToken,
175
- },
170
+ sessionToken: newSessionToken
171
+ }
176
172
  });
177
- }
178
- catch (_e) {
179
- // Sometimes, concurrent requests can happen and one would update
180
- // before the other, so prisma won't find it based on sessionToken and throw
181
- // Nothing to do in this case
173
+ } catch (_e) {
174
+ // Sometimes, concurrent requests can happen and one would update
175
+ // before the other, so prisma won't find it based on sessionToken and throw
176
+ // Nothing to do in this case
182
177
  }
183
178
  // @ts-expect-error dirty property to be removed in the patch
184
179
  finalSession.newSessionToken = newSessionToken;
@@ -193,18 +188,26 @@ export const authOptions = {
193
188
  await prisma.session.update({
194
189
  where: {
195
190
  id: session.id,
196
- OR: [{ lastActiveAt: null }, { lastActiveAt: { lt: threshold } }],
191
+ OR: [
192
+ {
193
+ lastActiveAt: null
194
+ },
195
+ {
196
+ lastActiveAt: {
197
+ lt: threshold
198
+ }
199
+ }
200
+ ]
197
201
  },
198
202
  data: {
199
- lastActiveAt: new Date(),
200
- },
203
+ lastActiveAt: new Date()
204
+ }
201
205
  });
202
- }
203
- catch (_e) {
204
- // Silently fail
206
+ } catch (_e) {
207
+ // Silently fail
205
208
  }
206
209
  return finalSession;
207
- },
210
+ }
208
211
  },
209
212
  cookies: {
210
213
  sessionToken: {
@@ -214,12 +217,8 @@ export const authOptions = {
214
217
  sameSite: 'lax',
215
218
  path: '/',
216
219
  secure: useSecureCookies,
217
- domain: process.env.NO_COOKIE_DOMAIN === 'true'
218
- ? undefined
219
- : nextAuthUrl === 'localhost'
220
- ? `.${nextAuthUrl}`
221
- : `.${new URL(nextAuthUrl).hostname}`,
222
- },
220
+ domain: process.env.NO_COOKIE_DOMAIN === 'true' ? undefined : nextAuthUrl === 'localhost' ? `.${nextAuthUrl}` : `.${new URL(nextAuthUrl).hostname}`
221
+ }
223
222
  },
224
223
  callbackUrl: {
225
224
  name: AUTH_COOKIE_CALLBACK_URL,
@@ -227,8 +226,8 @@ export const authOptions = {
227
226
  httpOnly: true,
228
227
  sameSite: 'lax',
229
228
  path: '/',
230
- secure: useSecureCookies,
231
- },
229
+ secure: useSecureCookies
230
+ }
232
231
  },
233
232
  csrfToken: {
234
233
  name: `${useSecureCookies ? '__Host-' : ''}${AUTH_COOKIE_CSRF_TOKEN}`,
@@ -236,8 +235,8 @@ export const authOptions = {
236
235
  httpOnly: true,
237
236
  sameSite: 'lax',
238
237
  path: '/',
239
- secure: useSecureCookies,
240
- },
238
+ secure: useSecureCookies
239
+ }
241
240
  },
242
241
  pkceCodeVerifier: {
243
242
  name: AUTH_COOKIE_PKCE_CODE_VERIFIER,
@@ -246,8 +245,8 @@ export const authOptions = {
246
245
  sameSite: 'lax',
247
246
  path: '/',
248
247
  secure: useSecureCookies,
249
- maxAge: 900,
250
- },
248
+ maxAge: 900
249
+ }
251
250
  },
252
251
  state: {
253
252
  name: AUTH_COOKIE_STATE,
@@ -256,8 +255,8 @@ export const authOptions = {
256
255
  sameSite: 'lax',
257
256
  path: '/',
258
257
  secure: useSecureCookies,
259
- maxAge: 900,
260
- },
258
+ maxAge: 900
259
+ }
261
260
  },
262
261
  nonce: {
263
262
  name: AUTH_COOKIE_NONCE,
@@ -265,13 +264,13 @@ export const authOptions = {
265
264
  httpOnly: true,
266
265
  sameSite: 'lax',
267
266
  path: '/',
268
- secure: useSecureCookies,
269
- },
270
- },
267
+ secure: useSecureCookies
268
+ }
269
+ }
271
270
  },
272
271
  useSecureCookies,
273
272
  jwt: {
274
- async encode(params) {
273
+ async encode (params) {
275
274
  const secret = new TextEncoder().encode(config.auth.jwtSecret);
276
275
  const alg = 'HS256';
277
276
  const tokenId = params.token?.sub;
@@ -280,40 +279,36 @@ export const authOptions = {
280
279
  }
281
280
  const user = await prisma.user.findUnique({
282
281
  where: {
283
- id: tokenId,
284
- },
282
+ id: tokenId
283
+ }
285
284
  });
286
285
  if (!user) {
287
286
  throw new Error('No user found');
288
287
  }
289
288
  const token = await new SignJWT({
290
289
  ...params.token,
291
- roles: user.groups,
292
- })
293
- .setProtectedHeader({ alg })
294
- .setIssuedAt()
295
- .setSubject(user.id)
296
- .setIssuer('flux.website')
297
- .setAudience('flux.website')
298
- .sign(secret);
290
+ roles: user.groups
291
+ }).setProtectedHeader({
292
+ alg
293
+ }).setIssuedAt().setSubject(user.id).setIssuer('flux.website').setAudience('flux.website').sign(secret);
299
294
  if (adapter.createSession) {
300
295
  await adapter.createSession({
301
296
  sessionToken: token,
302
297
  userId: user.id,
303
- expires: new Date(Date.now() + (params.maxAge ?? MAX_AGE) * 1000),
298
+ expires: new Date(Date.now() + (params.maxAge ?? MAX_AGE) * 1000)
304
299
  });
305
300
  }
306
301
  return token;
307
- },
302
+ }
308
303
  },
309
304
  session: {
310
305
  strategy: 'database',
311
306
  maxAge: MAX_AGE,
312
- generateSessionToken: async (user) => {
307
+ generateSessionToken: async (user)=>{
313
308
  return await generateSessionToken(user);
314
- },
309
+ }
315
310
  },
316
311
  pages: {
317
- signIn: '/signin',
318
- },
312
+ signIn: '/signin'
313
+ }
319
314
  };
@@ -1,2 +1,3 @@
1
1
  import type { Adapter } from 'next-auth/adapters';
2
2
  export declare function PrismaAdapter(): Adapter;
3
+ //# sourceMappingURL=prisma-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prisma-adapter.d.ts","sourceRoot":"","sources":["../../src/server/prisma-adapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,oBAAoB,CAAA;AAEjE,wBAAgB,aAAa,IAAI,OAAO,CAqJvC"}
@@ -4,136 +4,172 @@ export function PrismaAdapter() {
4
4
  return {
5
5
  // TODO
6
6
  // @ts-expect-error TypeScript is not working here
7
- createUser: async ({ id, groups, permissions, emailVerified, ...data }) => {
7
+ createUser: async ({ id, groups, permissions, emailVerified, ...data })=>{
8
8
  // @ts-expect-error
9
9
  const userData = {
10
10
  id: id || generateId('User'),
11
- groups: groups || ['member'],
11
+ groups: groups || [
12
+ 'member'
13
+ ],
12
14
  permissions: permissions || {},
13
15
  emailVerified: Boolean(emailVerified),
14
16
  email: data.email.toLowerCase().trim(),
15
- ...data,
17
+ ...data
16
18
  };
17
19
  const user = await prisma.user.create({
18
20
  data: {
19
- ...userData,
20
- },
21
+ ...userData
22
+ }
21
23
  });
22
24
  return user;
23
25
  },
24
26
  // TODO
25
27
  // @ts-expect-error
26
- getUser: (id) => prisma.user.findUnique({ where: { id } }),
28
+ getUser: (id)=>prisma.user.findUnique({
29
+ where: {
30
+ id
31
+ }
32
+ }),
27
33
  // TODO
28
34
  // @ts-expect-error
29
- getUserByEmail: (email) => prisma.user.findUnique({ where: { email: email.toLowerCase().trim() } }),
35
+ getUserByEmail: (email)=>prisma.user.findUnique({
36
+ where: {
37
+ email: email.toLowerCase().trim()
38
+ }
39
+ }),
30
40
  // TODO
31
41
  // @ts-expect-error
32
- async getUserByAccount(provider_providerAccountId) {
42
+ async getUserByAccount (provider_providerAccountId) {
33
43
  const account = await prisma.account.findUnique({
34
- where: { provider_providerAccountId },
35
- select: { user: true },
44
+ where: {
45
+ provider_providerAccountId
46
+ },
47
+ select: {
48
+ user: true
49
+ }
36
50
  });
37
51
  return account?.user ?? null;
38
52
  },
39
53
  // TODO
40
54
  // @ts-expect-error
41
- updateUser: ({ id, ...data }) => {
55
+ updateUser: ({ id, ...data })=>{
42
56
  // @ts-expect-error
43
57
  const userData = {
44
58
  email: data.email?.toLowerCase().trim(),
45
- ...data,
59
+ ...data
46
60
  };
47
- return prisma.user.update({ where: { id }, data: { ...userData } });
61
+ return prisma.user.update({
62
+ where: {
63
+ id
64
+ },
65
+ data: {
66
+ ...userData
67
+ }
68
+ });
48
69
  },
49
70
  // TODO
50
71
  // @ts-expect-error
51
- deleteUser: (id) => prisma.user.delete({ where: { id } }),
72
+ deleteUser: (id)=>prisma.user.delete({
73
+ where: {
74
+ id
75
+ }
76
+ }),
52
77
  // @ts-expect-error
53
- linkAccount: ({ id, ...data }) => {
78
+ linkAccount: ({ id, ...data })=>{
54
79
  return prisma.account.create({
55
80
  // @ts-expect-error
56
81
  data: {
57
82
  id: id || generateId('Account'),
58
- ...data,
59
- },
83
+ ...data
84
+ }
60
85
  });
61
86
  },
62
87
  // @ts-expect-error
63
- unlinkAccount: (provider_providerAccountId) => prisma.account.delete({
64
- where: { provider_providerAccountId },
65
- }),
88
+ unlinkAccount: (provider_providerAccountId)=>prisma.account.delete({
89
+ where: {
90
+ provider_providerAccountId
91
+ }
92
+ }),
66
93
  // TODO
67
94
  // @ts-expect-error
68
- async getSessionAndUser(sessionToken) {
95
+ async getSessionAndUser (sessionToken) {
69
96
  const userAndSession = await prisma.session.findUnique({
70
- where: { sessionToken },
71
- include: { user: true },
97
+ where: {
98
+ sessionToken
99
+ },
100
+ include: {
101
+ user: true
102
+ }
72
103
  });
73
- if (!userAndSession)
74
- return null;
104
+ if (!userAndSession) return null;
75
105
  const { user, ...session } = userAndSession;
76
- return { user, session };
106
+ return {
107
+ user,
108
+ session
109
+ };
77
110
  },
78
111
  // TODO
79
112
  // @ts-expect-error
80
- async createSession({ id, ...data }) {
113
+ async createSession ({ id, ...data }) {
81
114
  const session = await prisma.session.create({
82
115
  data: {
83
116
  id: id || generateId('Session'),
84
- ...data,
85
- },
117
+ ...data
118
+ }
86
119
  });
87
120
  return session;
88
121
  },
89
- updateSession: (data) => {
122
+ updateSession: (data)=>{
90
123
  return prisma.session.update({
91
- where: { sessionToken: data.sessionToken },
92
- data,
124
+ where: {
125
+ sessionToken: data.sessionToken
126
+ },
127
+ data
93
128
  });
94
129
  },
95
- deleteSession: async (sessionToken) => {
130
+ deleteSession: async (sessionToken)=>{
96
131
  try {
97
- await prisma.session.delete({ where: { sessionToken } });
98
- }
99
- catch (_e) {
100
- // TODO
101
- // DO nothing for now
132
+ await prisma.session.delete({
133
+ where: {
134
+ sessionToken
135
+ }
136
+ });
137
+ } catch (_e) {
138
+ // TODO
139
+ // DO nothing for now
102
140
  }
103
141
  },
104
142
  // TODO
105
143
  // @ts-expect-error
106
- async createVerificationToken({ id, ...data }) {
144
+ async createVerificationToken ({ id, ...data }) {
107
145
  const verificationToken = await prisma.verificationToken.create({
108
146
  data: {
109
147
  id: id || generateId('VerificationToken'),
110
- ...data,
111
- },
148
+ ...data
149
+ }
112
150
  });
113
151
  // TODO
114
152
  // @ts-expect-errors // MongoDB needs an ID, but we don't
115
- if (verificationToken.id)
116
- verificationToken.id = undefined;
153
+ if (verificationToken.id) verificationToken.id = undefined;
117
154
  return verificationToken;
118
155
  },
119
- async useVerificationToken(identifier_token) {
156
+ async useVerificationToken (identifier_token) {
120
157
  try {
121
158
  const verificationToken = await prisma.verificationToken.delete({
122
- where: { identifier_token },
159
+ where: {
160
+ identifier_token
161
+ }
123
162
  });
124
163
  // TODO
125
164
  // @ts-expect-errors // MongoDB needs an ID, but we don't
126
- if (verificationToken.id)
127
- verificationToken.id = undefined;
165
+ if (verificationToken.id) verificationToken.id = undefined;
128
166
  return verificationToken;
129
- }
130
- catch (error) {
167
+ } catch (error) {
131
168
  // If token already used/deleted, just return null
132
169
  // https://www.prisma.io/docs/reference/api-reference/error-reference#p2025
133
- if (error.code === 'P2025')
134
- return null;
170
+ if (error.code === 'P2025') return null;
135
171
  throw error;
136
172
  }
137
- },
173
+ }
138
174
  };
139
175
  }
@@ -18,3 +18,4 @@ declare module 'next-auth' {
18
18
  }
19
19
  }
20
20
  export {};
21
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AACjE,OAAO,WAAW,CAAA;AAMlB,KAAK,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;AACrC,KAAK,WAAW,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;AAE3C,OAAO,QAAQ,oBAAoB,CAAC;IACnC,UAAU,WAAY,SAAQ,QAAQ;KAAG;CACzC;AAED,OAAO,QAAQ,WAAW,CAAC;IAC1B,UAAU,IAAK,SAAQ,QAAQ;KAAG;IAClC,UAAU,OAAQ,SAAQ,WAAW;KAAG;IACxC,UAAU,OAAQ,SAAQ,WAAW;KAAG;IACxC,UAAU,WAAY,SAAQ,QAAQ;KAAG;CACzC"}
@@ -11,3 +11,4 @@ export declare const verifyToken: (tokenIdOrValue: string | TokenWithMaybeUser,
11
11
  export declare const clearToken: (tokenId: string) => Promise<void>;
12
12
  export declare const clearExpiredTokens: () => Promise<void>;
13
13
  export {};
14
+ //# sourceMappingURL=verfiy-token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verfiy-token.d.ts","sourceRoot":"","sources":["../../src/server/verfiy-token.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAO7D,OAAO,EAAW,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAEhE,KAAK,aAAa,GAAG;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC9B,CAAA;AAED,KAAK,OAAO,GAAG;IACd,WAAW,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,WAAW,GACvB,gBAAgB,MAAM,GAAG,kBAAkB,EAC3C,gBAAgB,aAAa,EAC7B,SAAS,OAAO,KACd,cAAc,CAAC,kBAAkB,CA0CnC,CAAA;AAED,eAAO,MAAM,UAAU,GAAU,SAAS,MAAM,kBAU/C,CAAA;AAED,eAAO,MAAM,kBAAkB,qBAM9B,CAAA"}