@driveflux/auth 4.0.90 → 4.0.91

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 (42) hide show
  1. package/dist/AuthProvider.js +76 -59
  2. package/dist/authorization/define.js +57 -28
  3. package/dist/authorization/fields/index.js +4 -7
  4. package/dist/authorization/helpers.js +10 -8
  5. package/dist/authorization/index.js +6 -6
  6. package/dist/authorization/permissions-list.js +5 -7
  7. package/dist/authorization/quick.js +1 -1
  8. package/dist/authorization/roles/admin/business-development-executive.js +20 -7
  9. package/dist/authorization/roles/admin/ceo.js +4 -2
  10. package/dist/authorization/roles/admin/common.js +5 -3
  11. package/dist/authorization/roles/admin/concierge.js +35 -10
  12. package/dist/authorization/roles/admin/customer-success-executive.js +40 -10
  13. package/dist/authorization/roles/admin/data-analyst.js +7 -4
  14. package/dist/authorization/roles/admin/designer.js +7 -4
  15. package/dist/authorization/roles/admin/engineer.js +7 -4
  16. package/dist/authorization/roles/admin/finance-executive.js +11 -4
  17. package/dist/authorization/roles/admin/head-of-business-development.js +14 -4
  18. package/dist/authorization/roles/admin/head-of-data-analytics.js +14 -4
  19. package/dist/authorization/roles/admin/head-of-engineering.js +17 -6
  20. package/dist/authorization/roles/admin/head-of-finance.js +8 -3
  21. package/dist/authorization/roles/admin/head-of-human-resources.js +13 -5
  22. package/dist/authorization/roles/admin/head-of-marketing.js +17 -5
  23. package/dist/authorization/roles/admin/head-of-operations.js +8 -3
  24. package/dist/authorization/roles/admin/head-of-product.js +17 -6
  25. package/dist/authorization/roles/admin/head-of-sales.js +17 -5
  26. package/dist/authorization/roles/admin/human-resources-executive.js +12 -5
  27. package/dist/authorization/roles/admin/marketing-executive.js +7 -4
  28. package/dist/authorization/roles/admin/product-manager.js +7 -4
  29. package/dist/authorization/roles/admin/sales-executive.js +24 -8
  30. package/dist/authorization/roles/consumer/business-admin.js +19 -6
  31. package/dist/authorization/roles/consumer/business-user.js +18 -6
  32. package/dist/authorization/roles/consumer/member.js +16 -6
  33. package/dist/authorization/types.js +1 -1
  34. package/dist/authorization/update-user-permissions.js +22 -15
  35. package/dist/authorization/utils.js +26 -11
  36. package/dist/server/authenticate-user.js +11 -7
  37. package/dist/server/cors.js +23 -12
  38. package/dist/server/credentials-provider.js +2 -2
  39. package/dist/server/next-auth.js +104 -109
  40. package/dist/server/prisma-adapter.js +88 -52
  41. package/dist/server/verfiy-token.js +39 -24
  42. package/package.json +2 -2
@@ -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
  }
@@ -1,29 +1,36 @@
1
1
  import { prisma } from '@driveflux/db';
2
- import { makeProblem, PROBLEM_CORRUPT, PROBLEM_EXPIRED, PROBLEM_INVALID_DATA, } from '@driveflux/problem';
2
+ import { makeProblem, PROBLEM_CORRUPT, PROBLEM_EXPIRED, PROBLEM_INVALID_DATA } from '@driveflux/problem';
3
3
  import { Err, Ok } from '@driveflux/result';
4
- export const verifyToken = async (tokenIdOrValue, verifications, option) => {
5
- const token = typeof tokenIdOrValue === 'object'
6
- ? tokenIdOrValue
7
- : (await prisma.token.findFirst({
8
- where: {
9
- OR: [{ id: tokenIdOrValue }, { value: tokenIdOrValue }],
10
- },
11
- ...(option?.includeUser ? { include: { user: true } } : {}),
12
- }));
4
+ export const verifyToken = async (tokenIdOrValue, verifications, option)=>{
5
+ const token = typeof tokenIdOrValue === 'object' ? tokenIdOrValue : await prisma.token.findFirst({
6
+ where: {
7
+ OR: [
8
+ {
9
+ id: tokenIdOrValue
10
+ },
11
+ {
12
+ value: tokenIdOrValue
13
+ }
14
+ ]
15
+ },
16
+ ...option?.includeUser ? {
17
+ include: {
18
+ user: true
19
+ }
20
+ } : {}
21
+ });
13
22
  if (!token) {
14
23
  return new Err(makeProblem(PROBLEM_INVALID_DATA, 'Invalid token'));
15
24
  }
16
25
  if (token.expiresAt && token.expiresAt.getTime() < Date.now()) {
17
26
  return new Err(makeProblem(PROBLEM_EXPIRED, 'This token has expired'));
18
27
  }
19
- if (typeof verifications?.scope !== 'undefined' &&
20
- token.scope !== verifications.scope) {
28
+ if (typeof verifications?.scope !== 'undefined' && token.scope !== verifications.scope) {
21
29
  return new Err(makeProblem(PROBLEM_INVALID_DATA, 'Invalid token scope'));
22
30
  }
23
31
  if (typeof verifications?.metadata !== 'undefined') {
24
- for (const key of Object.keys(verifications.metadata)) {
25
- if (typeof verifications.metadata[key] !== 'undefined' &&
26
- verifications.metadata[key] !== token.metadata?.[key]) {
32
+ for (const key of Object.keys(verifications.metadata)){
33
+ if (typeof verifications.metadata[key] !== 'undefined' && verifications.metadata[key] !== token.metadata?.[key]) {
27
34
  return new Err(makeProblem(PROBLEM_INVALID_DATA, 'Invalid token data'));
28
35
  }
29
36
  }
@@ -33,22 +40,30 @@ export const verifyToken = async (tokenIdOrValue, verifications, option) => {
33
40
  }
34
41
  return new Ok(token);
35
42
  };
36
- export const clearToken = async (tokenId) => {
43
+ export const clearToken = async (tokenId)=>{
37
44
  try {
38
45
  await prisma.token.delete({
39
46
  where: {
40
- id: tokenId,
41
- },
47
+ id: tokenId
48
+ }
42
49
  });
43
- }
44
- catch (_e) {
45
- // Nothing to for now
50
+ } catch (_e) {
51
+ // Nothing to for now
46
52
  }
47
53
  };
48
- export const clearExpiredTokens = async () => {
54
+ export const clearExpiredTokens = async ()=>{
49
55
  await prisma.token.deleteMany({
50
56
  where: {
51
- OR: [{ expiresAt: { lte: new Date() } }, { invalid: true }],
52
- },
57
+ OR: [
58
+ {
59
+ expiresAt: {
60
+ lte: new Date()
61
+ }
62
+ },
63
+ {
64
+ invalid: true
65
+ }
66
+ ]
67
+ }
53
68
  });
54
69
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@driveflux/auth",
3
- "version": "4.0.90",
3
+ "version": "4.0.91",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -75,7 +75,7 @@
75
75
  "@casl/ability": "^6.8.1",
76
76
  "@casl/prisma": "^1.6.2",
77
77
  "@driveflux/config": "3.0.12",
78
- "@driveflux/db": "4.1.20",
78
+ "@driveflux/db": "4.1.21",
79
79
  "@driveflux/fetch": "8.0.3",
80
80
  "@driveflux/problem": "6.0.3",
81
81
  "@driveflux/reporter": "7.0.4",