cortex-auth 1.0.1 → 1.1.0

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.
@@ -0,0 +1,13 @@
1
+ import { type Payload } from 'payload';
2
+ import { NextAuthRequest } from "next-auth";
3
+ export declare function authenticateRequest({ req, payload }: {
4
+ req: NextAuthRequest;
5
+ payload?: Payload;
6
+ }): Promise<{
7
+ id: string | number;
8
+ email: any;
9
+ name: any;
10
+ role: any;
11
+ method: string;
12
+ }>;
13
+ //# sourceMappingURL=authenticateRequest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authenticateRequest.d.ts","sourceRoot":"","sources":["../../src/payload-jwt/authenticateRequest.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAqC5C,wBAAsB,mBAAmB,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;IAAE,GAAG,EAAE,eAAe,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE;;;;;;GAwDtG"}
@@ -0,0 +1,63 @@
1
+ import { verifySession } from "./user";
2
+ export async function authenticateRequest({ req, payload }) {
3
+ let type = 'cookie';
4
+ if (req.auth) {
5
+ const user = req.auth.user;
6
+ return {
7
+ id: user.id,
8
+ email: user.email,
9
+ name: user.name,
10
+ role: user.role,
11
+ method: 'cookie',
12
+ };
13
+ }
14
+ else {
15
+ type = 'bearer';
16
+ const session = await verifySession(req);
17
+ if (!session || !session.sub || !session.extra)
18
+ throw new Error("No valid session found");
19
+ if (!payload)
20
+ throw new Error("Payload instance is required for Keycloak user normalisation");
21
+ const payloadUser = (await payload.find({ collection: 'users', depth: 1, limit: 1, draft: false, overrideAccess: true, where: { email: { equals: session.extra.email } } })).docs[0];
22
+ if (!payloadUser && session.extra) {
23
+ // create the user in Payload
24
+ const newUser = await payload.create({
25
+ collection: 'users',
26
+ data: {
27
+ email: session.extra.email,
28
+ name: session.extra.name,
29
+ role: 'user',
30
+ enabled: true,
31
+ accounts: [
32
+ {
33
+ provider: 'keycloak', providerAccountId: session.sub, type: 'oidc',
34
+ }
35
+ ],
36
+ },
37
+ draft: false,
38
+ overrideAccess: true,
39
+ });
40
+ console.log("Created new Payload user for Keycloak user:", newUser.id, newUser.email);
41
+ return {
42
+ id: newUser.id,
43
+ email: newUser.email,
44
+ name: newUser.name,
45
+ role: newUser.role,
46
+ method: 'bearer',
47
+ };
48
+ }
49
+ else if (payloadUser) {
50
+ return {
51
+ id: payloadUser.id,
52
+ email: payloadUser.email,
53
+ name: payloadUser.name,
54
+ role: payloadUser.role,
55
+ method: 'bearer',
56
+ };
57
+ }
58
+ else {
59
+ throw new Error("No user found for the given session");
60
+ }
61
+ }
62
+ }
63
+ //# sourceMappingURL=authenticateRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authenticateRequest.js","sourceRoot":"","sources":["../../src/payload-jwt/authenticateRequest.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAyCvC,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,EAAE,GAAG,EAAE,OAAO,EAA+C;IACnG,IAAI,IAAI,GAAG,QAAQ,CAAA;IACnB,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAY,CAAA;QAClC,OAAO;YACH,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,QAAQ;SACnB,CAAA;IACL,CAAC;SAAM,CAAC;QACJ,IAAI,GAAG,QAAQ,CAAA;QACf,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAA;QACxC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;QACzF,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAA;QAC7F,MAAM,WAAW,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAEpL,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAChC,6BAA6B;YAC7B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC;gBACjC,UAAU,EAAE,OAAO;gBACnB,IAAI,EAAE;oBACF,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK;oBAC1B,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI;oBACxB,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,IAAI;oBACb,QAAQ,EAAE;wBACN;4BACI,QAAQ,EAAE,UAAU,EAAE,iBAAiB,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM;yBACrE;qBACJ;iBACJ;gBACD,KAAK,EAAE,KAAK;gBACZ,cAAc,EAAE,IAAI;aACvB,CAAC,CAAA;YACF,OAAO,CAAC,GAAG,CAAC,6CAA6C,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;YACrF,OAAO;gBACH,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,MAAM,EAAE,QAAQ;aACnB,CAAA;QACL,CAAC;aAAM,IAAI,WAAW,EAAE,CAAC;YACrB,OAAO;gBACH,EAAE,EAAE,WAAW,CAAC,EAAE;gBAClB,KAAK,EAAE,WAAW,CAAC,KAAK;gBACxB,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,MAAM,EAAE,QAAQ;aACnB,CAAA;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;QAC1D,CAAC;IACL,CAAC;AACL,CAAC"}
@@ -1,2 +1,3 @@
1
1
  export * from './user';
2
+ export * from './authenticateRequest';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/payload-jwt/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/payload-jwt/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,uBAAuB,CAAA"}
@@ -1,2 +1,3 @@
1
1
  export * from './user';
2
+ export * from './authenticateRequest';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/payload-jwt/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/payload-jwt/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,uBAAuB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cortex-auth",
3
- "version": "1.0.1",
3
+ "version": "1.1.0",
4
4
  "description": "Shared authentication utilities for Node.js and Next.js applications",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",
@@ -37,7 +37,9 @@
37
37
  "jsonwebtoken": "^9.0.3"
38
38
  },
39
39
  "peerDependencies": {
40
- "next": ">=15.0.0"
40
+ "next": ">=15.0.0",
41
+ "next-auth": "5.0.0-beta.30",
42
+ "payload": "^3.70.0"
41
43
  },
42
44
  "peerDependenciesMeta": {
43
45
  "next": {
@@ -52,6 +54,8 @@
52
54
  "@typescript-eslint/parser": "^6.15.0",
53
55
  "eslint": "^8.56.0",
54
56
  "next": "^15.0.0",
57
+ "next-auth": "5.0.0-beta.30",
58
+ "payload": "^3.70.0",
55
59
  "typescript": "^5.3.3"
56
60
  }
57
61
  }