payload-zitadel-plugin 0.5.28 → 0.5.30

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.
package/README.md CHANGED
@@ -10,7 +10,7 @@ Thus, the user collection in PayloadCMS becomes just a shadow of the information
10
10
  ## Install
11
11
 
12
12
  ```shell
13
- pnpm add payload-zitadel-plugin@0.5.28
13
+ pnpm add payload-zitadel-plugin@0.5.30
14
14
  ```
15
15
 
16
16
  ## Configuration
@@ -18,8 +18,8 @@ pnpm add payload-zitadel-plugin@0.5.28
18
18
  Initialize the plugin in the Payload config file. Change the parameters to connect to your Zitadel instance.
19
19
 
20
20
  The cleanest way to use this plugin is just to set the `ZITADEL_URL` and `ZITADEL_CLIENT_ID` environment variables,
21
- set up the `next.config.ts` as described down below and then add `zitadelPlugin()` without further configuration to the
22
- plugin list.
21
+ set up the `next.config.ts` as described down below and then add `zitadelPlugin({})` without further configuration to the
22
+ plugin list. If you don't use any options, you can use `defaultZitadelPlugin` as an abbreviation (`defaultZitadelPlugin = zitadelPlugin({})`).
23
23
 
24
24
  #### payload.config.ts
25
25
 
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
- import type { ZitadelPlugin } from './types.js';
2
- export declare const zitadelPlugin: ZitadelPlugin;
1
+ import type { ZitadelPluginOptions } from './types.js';
2
+ export declare const zitadelPlugin: (options: ZitadelPluginOptions) => import("payload").Plugin;
3
+ export declare const defaultZitadelPlugin: import("payload").Plugin;
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAiC,aAAa,EAAC,MAAM,YAAY,CAAA;AAG7E,eAAO,MAAM,aAAa,EAAE,aA6M3B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAiC,oBAAoB,EAAC,MAAM,YAAY,CAAA;AAGpF,eAAO,MAAM,aAAa,6DAiNxB,CAAA;AAEF,eAAO,MAAM,oBAAoB,0BAAoB,CAAA"}
package/dist/index.js CHANGED
@@ -1,64 +1,67 @@
1
1
  import { PHASE_DEVELOPMENT_SERVER, PHASE_PRODUCTION_SERVER } from 'next/constants.js';
2
2
  import { cookies } from 'next/headers.js';
3
+ import { definePlugin } from 'payload';
3
4
  import { AvatarComponent, LoginButtonComponent } from './components/index.js';
4
5
  import { COOKIES, DEFAULT_CONFIG, ERRORS, ROUTES } from './constants.js';
5
6
  import { authorize, callback } from './handlers/index.js';
6
7
  import { zitadelStrategy } from './strategy.js';
7
8
  import { translations } from './translations.js';
8
9
  import { defaultRedirect, getAuthSlug, loadEnv, requestRedirect } from './utils/index.js';
9
- export const zitadelPlugin = (config)=>{
10
- const envs = loadEnv([
11
- 'ZITADEL_URL',
12
- 'ZITADEL_CLIENT_ID',
13
- 'ZITADEL_API_JWT',
14
- 'ZITADEL_API_CLIENT_ID',
15
- 'ZITADEL_API_CLIENT_SECRET'
16
- ]);
17
- let { issuerURL = envs.ZITADEL_URL ?? '', clientId = envs.ZITADEL_CLIENT_ID ?? '', fields, strategyName = DEFAULT_CONFIG.strategyName, api, callbacks, components } = config ?? {};
18
- let errors = [];
19
- if (!issuerURL) {
20
- errors.push(ERRORS.issuerURL);
21
- }
22
- if (!clientId) {
23
- errors.push(ERRORS.clientId);
24
- }
25
- if (!api) {
26
- if (envs.ZITADEL_API_JWT) {
27
- try {
28
- api = {
29
- type: 'jwt',
30
- jwt: JSON.parse(envs.ZITADEL_API_JWT)
31
- };
32
- } catch (e) {
33
- errors.push(ERRORS.apiJWT);
34
- }
35
- } else if (envs.ZITADEL_API_CLIENT_ID) {
36
- if (envs.ZITADEL_API_CLIENT_SECRET) {
37
- api = {
38
- type: 'basic',
39
- clientId: envs.ZITADEL_API_CLIENT_ID,
40
- clientSecret: envs.ZITADEL_API_CLIENT_SECRET
41
- };
42
- } else {
43
- errors.push(ERRORS.apiClientSecret);
10
+ export const zitadelPlugin = definePlugin({
11
+ slug: 'plugin-zitadel',
12
+ plugin: (args)=>{
13
+ const envs = loadEnv([
14
+ 'ZITADEL_URL',
15
+ 'ZITADEL_CLIENT_ID',
16
+ 'ZITADEL_API_JWT',
17
+ 'ZITADEL_API_CLIENT_ID',
18
+ 'ZITADEL_API_CLIENT_SECRET'
19
+ ]);
20
+ let { config, issuerURL = envs.ZITADEL_URL ?? '', clientId = envs.ZITADEL_CLIENT_ID ?? '', fields, strategyName = DEFAULT_CONFIG.strategyName, api, callbacks, components } = args;
21
+ let errors = [];
22
+ if (!issuerURL) {
23
+ errors.push(ERRORS.issuerURL);
24
+ }
25
+ if (!clientId) {
26
+ errors.push(ERRORS.clientId);
27
+ }
28
+ if (!api) {
29
+ if (envs.ZITADEL_API_JWT) {
30
+ try {
31
+ api = {
32
+ type: 'jwt',
33
+ jwt: JSON.parse(envs.ZITADEL_API_JWT)
34
+ };
35
+ } catch (e) {
36
+ errors.push(ERRORS.apiJWT);
37
+ }
38
+ } else if (envs.ZITADEL_API_CLIENT_ID) {
39
+ if (envs.ZITADEL_API_CLIENT_SECRET) {
40
+ api = {
41
+ type: 'basic',
42
+ clientId: envs.ZITADEL_API_CLIENT_ID,
43
+ clientSecret: envs.ZITADEL_API_CLIENT_SECRET
44
+ };
45
+ } else {
46
+ errors.push(ERRORS.apiClientSecret);
47
+ }
44
48
  }
45
49
  }
46
- }
47
- if (errors.length && [
48
- PHASE_DEVELOPMENT_SERVER,
49
- PHASE_PRODUCTION_SERVER
50
- ].includes(process.env.NEXT_PHASE ?? '')) {
51
- console.warn('The following errors occurred during initialization of the payload zitadel plugin:');
52
- for (const error of errors)console.warn(error);
53
- }
54
- const fieldsConfig = {
55
- ...DEFAULT_CONFIG.fields,
56
- ...fields
57
- };
58
- return (incomingConfig)=>({
59
- ...incomingConfig,
50
+ if (errors.length && [
51
+ PHASE_DEVELOPMENT_SERVER,
52
+ PHASE_PRODUCTION_SERVER
53
+ ].includes(process.env.NEXT_PHASE ?? '')) {
54
+ console.warn('The following errors occurred during initialization of the payload zitadel plugin:');
55
+ for (const error of errors)console.warn(error);
56
+ }
57
+ const fieldsConfig = {
58
+ ...DEFAULT_CONFIG.fields,
59
+ ...fields
60
+ };
61
+ return {
62
+ ...config,
60
63
  admin: {
61
- ...incomingConfig.admin,
64
+ ...config.admin,
62
65
  ...components?.avatar ? {} : {
63
66
  avatar: {
64
67
  Component: {
@@ -71,9 +74,9 @@ export const zitadelPlugin = (config)=>{
71
74
  },
72
75
  ...components?.loginButton ? {} : {
73
76
  components: {
74
- ...incomingConfig.admin?.components,
77
+ ...config.admin?.components,
75
78
  afterLogin: [
76
- ...incomingConfig.admin?.components?.afterLogin ?? [],
79
+ ...config.admin?.components?.afterLogin ?? [],
77
80
  {
78
81
  ...LoginButtonComponent,
79
82
  serverProps: {
@@ -84,11 +87,11 @@ export const zitadelPlugin = (config)=>{
84
87
  }
85
88
  }
86
89
  },
87
- collections: (incomingConfig.collections || []).map((collection)=>{
90
+ collections: (config.collections || []).map((collection)=>{
88
91
  const authConfig = typeof collection.auth == 'boolean' ? {} : collection.auth;
89
92
  return {
90
93
  ...collection,
91
- ...collection.slug == getAuthSlug(incomingConfig) ? {
94
+ ...collection.slug == getAuthSlug(config) ? {
92
95
  auth: {
93
96
  ...authConfig,
94
97
  disableLocalStrategy: true,
@@ -189,20 +192,22 @@ export const zitadelPlugin = (config)=>{
189
192
  };
190
193
  }),
191
194
  i18n: {
192
- ...incomingConfig.i18n,
195
+ ...config.i18n,
193
196
  translations: {
194
- ...incomingConfig.i18n?.translations,
197
+ ...config.i18n?.translations,
195
198
  de: {
196
199
  ...translations.de,
197
- ...incomingConfig.i18n?.translations?.de
200
+ ...config.i18n?.translations?.de
198
201
  },
199
202
  en: {
200
203
  ...translations.en,
201
- ...incomingConfig.i18n?.translations?.en
204
+ ...config.i18n?.translations?.en
202
205
  }
203
206
  }
204
207
  }
205
- });
206
- };
208
+ };
209
+ }
210
+ });
211
+ export const defaultZitadelPlugin = zitadelPlugin({});
207
212
 
208
213
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {PHASE_DEVELOPMENT_SERVER, PHASE_PRODUCTION_SERVER} from 'next/constants.js'\nimport {cookies} from 'next/headers.js'\nimport {AvatarComponent, LoginButtonComponent} from './components/index.js'\nimport {COOKIES, DEFAULT_CONFIG, ERRORS, ROUTES} from './constants.js'\nimport {authorize, callback} from './handlers/index.js'\nimport {zitadelStrategy} from './strategy.js'\nimport {translations} from './translations.js'\nimport type {ZitadelAvatarProps, ZitadelJWT, ZitadelPlugin} from './types.js'\nimport {defaultRedirect, getAuthSlug, loadEnv, requestRedirect} from './utils/index.js'\n\nexport const zitadelPlugin: ZitadelPlugin = (config) => {\n\n const envs = loadEnv(['ZITADEL_URL', 'ZITADEL_CLIENT_ID', 'ZITADEL_API_JWT', 'ZITADEL_API_CLIENT_ID', 'ZITADEL_API_CLIENT_SECRET'])\n\n let {\n issuerURL = envs.ZITADEL_URL ?? '',\n clientId = envs.ZITADEL_CLIENT_ID ?? '',\n fields,\n strategyName = DEFAULT_CONFIG.strategyName,\n api,\n callbacks,\n components\n } = config ?? {}\n\n let errors = []\n\n if (!issuerURL) {\n errors.push(ERRORS.issuerURL)\n }\n\n if (!clientId) {\n errors.push(ERRORS.clientId)\n }\n\n if (!api) {\n\n if (envs.ZITADEL_API_JWT) {\n\n try {\n api = {\n type: 'jwt',\n jwt: JSON.parse(envs.ZITADEL_API_JWT) as ZitadelJWT\n }\n } catch (e) {\n errors.push(ERRORS.apiJWT)\n }\n\n } else if (envs.ZITADEL_API_CLIENT_ID) {\n\n if (envs.ZITADEL_API_CLIENT_SECRET) {\n api = {\n type: 'basic',\n clientId: envs.ZITADEL_API_CLIENT_ID,\n clientSecret: envs.ZITADEL_API_CLIENT_SECRET\n }\n } else {\n errors.push(ERRORS.apiClientSecret)\n }\n\n }\n\n }\n\n if (errors.length && [PHASE_DEVELOPMENT_SERVER, PHASE_PRODUCTION_SERVER].includes(process.env.NEXT_PHASE ?? '')) {\n console.warn('The following errors occurred during initialization of the payload zitadel plugin:')\n for (const error of errors)\n console.warn(error)\n }\n\n const fieldsConfig = {...DEFAULT_CONFIG.fields, ...fields}\n\n return (incomingConfig) => ({\n ...incomingConfig,\n admin: {\n ...incomingConfig.admin,\n ...components?.avatar ? {} : {\n avatar: {\n Component: {\n ...AvatarComponent,\n clientProps: {\n imageFieldName: fieldsConfig.image.name\n } satisfies ZitadelAvatarProps\n }\n }\n },\n ...components?.loginButton ? {} : {\n components: {\n ...incomingConfig.admin?.components,\n afterLogin: [\n ...incomingConfig.admin?.components?.afterLogin ?? [],\n {\n ...LoginButtonComponent,\n serverProps: {\n label: components?.loginButton?.label ?? DEFAULT_CONFIG.label\n }\n }\n ]\n }\n }\n },\n collections: (incomingConfig.collections || []).map((collection) => {\n\n const authConfig = typeof collection.auth == 'boolean' ? {} : collection.auth\n\n return {\n ...collection,\n ...collection.slug == getAuthSlug(incomingConfig) ? {\n auth: {\n ...authConfig,\n disableLocalStrategy: true,\n strategies: [\n ...authConfig?.strategies ?? [],\n zitadelStrategy({\n strategyName: strategyName,\n issuerURL,\n fields: fieldsConfig,\n api: api ?? false\n })\n ]\n },\n hooks: {\n afterLogout: [async () => (await cookies()).set(COOKIES.logout)]\n },\n endpoints: [\n {\n path: ROUTES.authorize,\n method: 'get',\n handler: authorize({\n issuerURL,\n clientId\n })\n },\n {\n path: ROUTES.callback,\n method: 'get',\n handler: callback({\n issuerURL,\n clientId,\n fields: fieldsConfig,\n afterLogin: callbacks?.afterLogin ?? defaultRedirect,\n afterLogout: callbacks?.afterLogout ?? defaultRedirect\n })\n },\n {\n path: ROUTES.end_session,\n method: 'get',\n handler: (req) => requestRedirect({req, issuerURL, clientId, invokedBy: 'end_session'})\n }\n ],\n fields: [\n ...collection.fields,\n {\n ...fieldsConfig.id,\n type: 'text',\n admin: {\n readOnly: true\n },\n index: true,\n unique: true,\n required: true\n },\n {\n ...fieldsConfig.name,\n type: 'text',\n admin: {\n readOnly: true\n }\n },\n {\n ...fieldsConfig.email,\n type: 'email',\n admin: {\n readOnly: true\n }\n },\n {\n ...fieldsConfig.image,\n type: 'text',\n admin: {\n readOnly: true\n }\n },\n {\n ...fieldsConfig.roles,\n type: 'array',\n admin: {\n readOnly: true\n },\n fields: [\n {\n ...fieldsConfig.roleFields.name,\n type: 'text'\n }\n ]\n }\n ]\n } : {}\n }\n }),\n i18n: {\n ...incomingConfig.i18n,\n translations: {\n ...incomingConfig.i18n?.translations,\n de: {\n ...translations.de,\n ...incomingConfig.i18n?.translations?.de\n },\n en: {\n ...translations.en,\n ...incomingConfig.i18n?.translations?.en\n }\n }\n }\n })\n\n}\n"],"names":["PHASE_DEVELOPMENT_SERVER","PHASE_PRODUCTION_SERVER","cookies","AvatarComponent","LoginButtonComponent","COOKIES","DEFAULT_CONFIG","ERRORS","ROUTES","authorize","callback","zitadelStrategy","translations","defaultRedirect","getAuthSlug","loadEnv","requestRedirect","zitadelPlugin","config","envs","issuerURL","ZITADEL_URL","clientId","ZITADEL_CLIENT_ID","fields","strategyName","api","callbacks","components","errors","push","ZITADEL_API_JWT","type","jwt","JSON","parse","e","apiJWT","ZITADEL_API_CLIENT_ID","ZITADEL_API_CLIENT_SECRET","clientSecret","apiClientSecret","length","includes","process","env","NEXT_PHASE","console","warn","error","fieldsConfig","incomingConfig","admin","avatar","Component","clientProps","imageFieldName","image","name","loginButton","afterLogin","serverProps","label","collections","map","collection","authConfig","auth","slug","disableLocalStrategy","strategies","hooks","afterLogout","set","logout","endpoints","path","method","handler","end_session","req","invokedBy","id","readOnly","index","unique","required","email","roles","roleFields","i18n","de","en"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {PHASE_DEVELOPMENT_SERVER, PHASE_PRODUCTION_SERVER} from 'next/constants.js'\nimport {cookies} from 'next/headers.js'\nimport {definePlugin} from 'payload'\nimport {AvatarComponent, LoginButtonComponent} from './components/index.js'\nimport {COOKIES, DEFAULT_CONFIG, ERRORS, ROUTES} from './constants.js'\nimport {authorize, callback} from './handlers/index.js'\nimport {zitadelStrategy} from './strategy.js'\nimport {translations} from './translations.js'\nimport type {ZitadelAvatarProps, ZitadelJWT, ZitadelPluginOptions} from './types.js'\nimport {defaultRedirect, getAuthSlug, loadEnv, requestRedirect} from './utils/index.js'\n\nexport const zitadelPlugin = definePlugin<ZitadelPluginOptions>({\n slug: 'plugin-zitadel',\n plugin: (args) => {\n\n const envs = loadEnv(['ZITADEL_URL', 'ZITADEL_CLIENT_ID', 'ZITADEL_API_JWT', 'ZITADEL_API_CLIENT_ID', 'ZITADEL_API_CLIENT_SECRET'])\n\n let {\n config,\n issuerURL = envs.ZITADEL_URL ?? '',\n clientId = envs.ZITADEL_CLIENT_ID ?? '',\n fields,\n strategyName = DEFAULT_CONFIG.strategyName,\n api,\n callbacks,\n components\n } = args\n\n let errors = []\n\n if (!issuerURL) {\n errors.push(ERRORS.issuerURL)\n }\n\n if (!clientId) {\n errors.push(ERRORS.clientId)\n }\n\n if (!api) {\n\n if (envs.ZITADEL_API_JWT) {\n\n try {\n api = {\n type: 'jwt',\n jwt: JSON.parse(envs.ZITADEL_API_JWT) as ZitadelJWT\n }\n } catch (e) {\n errors.push(ERRORS.apiJWT)\n }\n\n } else if (envs.ZITADEL_API_CLIENT_ID) {\n\n if (envs.ZITADEL_API_CLIENT_SECRET) {\n api = {\n type: 'basic',\n clientId: envs.ZITADEL_API_CLIENT_ID,\n clientSecret: envs.ZITADEL_API_CLIENT_SECRET\n }\n } else {\n errors.push(ERRORS.apiClientSecret)\n }\n\n }\n\n }\n\n if (errors.length && [PHASE_DEVELOPMENT_SERVER, PHASE_PRODUCTION_SERVER].includes(process.env.NEXT_PHASE ?? '')) {\n console.warn('The following errors occurred during initialization of the payload zitadel plugin:')\n for (const error of errors)\n console.warn(error)\n }\n\n const fieldsConfig = {...DEFAULT_CONFIG.fields, ...fields}\n\n return {\n ...config,\n admin: {\n ...config.admin,\n ...components?.avatar ? {} : {\n avatar: {\n Component: {\n ...AvatarComponent,\n clientProps: {\n imageFieldName: fieldsConfig.image.name\n } satisfies ZitadelAvatarProps\n }\n }\n },\n ...components?.loginButton ? {} : {\n components: {\n ...config.admin?.components,\n afterLogin: [\n ...config.admin?.components?.afterLogin ?? [],\n {\n ...LoginButtonComponent,\n serverProps: {\n label: components?.loginButton?.label ?? DEFAULT_CONFIG.label\n }\n }\n ]\n }\n }\n },\n collections: (config.collections || []).map((collection) => {\n\n const authConfig = typeof collection.auth == 'boolean' ? {} : collection.auth\n\n return {\n ...collection,\n ...collection.slug == getAuthSlug(config) ? {\n auth: {\n ...authConfig,\n disableLocalStrategy: true,\n strategies: [\n ...authConfig?.strategies ?? [],\n zitadelStrategy({\n strategyName: strategyName,\n issuerURL,\n fields: fieldsConfig,\n api: api ?? false\n })\n ]\n },\n hooks: {\n afterLogout: [async () => (await cookies()).set(COOKIES.logout)]\n },\n endpoints: [\n {\n path: ROUTES.authorize,\n method: 'get',\n handler: authorize({\n issuerURL,\n clientId\n })\n },\n {\n path: ROUTES.callback,\n method: 'get',\n handler: callback({\n issuerURL,\n clientId,\n fields: fieldsConfig,\n afterLogin: callbacks?.afterLogin ?? defaultRedirect,\n afterLogout: callbacks?.afterLogout ?? defaultRedirect\n })\n },\n {\n path: ROUTES.end_session,\n method: 'get',\n handler: (req) => requestRedirect({req, issuerURL, clientId, invokedBy: 'end_session'})\n }\n ],\n fields: [\n ...collection.fields,\n {\n ...fieldsConfig.id,\n type: 'text',\n admin: {\n readOnly: true\n },\n index: true,\n unique: true,\n required: true\n },\n {\n ...fieldsConfig.name,\n type: 'text',\n admin: {\n readOnly: true\n }\n },\n {\n ...fieldsConfig.email,\n type: 'email',\n admin: {\n readOnly: true\n }\n },\n {\n ...fieldsConfig.image,\n type: 'text',\n admin: {\n readOnly: true\n }\n },\n {\n ...fieldsConfig.roles,\n type: 'array',\n admin: {\n readOnly: true\n },\n fields: [\n {\n ...fieldsConfig.roleFields.name,\n type: 'text'\n }\n ]\n }\n ]\n } : {}\n }\n }),\n i18n: {\n ...config.i18n,\n translations: {\n ...config.i18n?.translations,\n de: {\n ...translations.de,\n ...config.i18n?.translations?.de\n },\n en: {\n ...translations.en,\n ...config.i18n?.translations?.en\n }\n }\n }\n }\n\n }\n})\n\nexport const defaultZitadelPlugin = zitadelPlugin({})"],"names":["PHASE_DEVELOPMENT_SERVER","PHASE_PRODUCTION_SERVER","cookies","definePlugin","AvatarComponent","LoginButtonComponent","COOKIES","DEFAULT_CONFIG","ERRORS","ROUTES","authorize","callback","zitadelStrategy","translations","defaultRedirect","getAuthSlug","loadEnv","requestRedirect","zitadelPlugin","slug","plugin","args","envs","config","issuerURL","ZITADEL_URL","clientId","ZITADEL_CLIENT_ID","fields","strategyName","api","callbacks","components","errors","push","ZITADEL_API_JWT","type","jwt","JSON","parse","e","apiJWT","ZITADEL_API_CLIENT_ID","ZITADEL_API_CLIENT_SECRET","clientSecret","apiClientSecret","length","includes","process","env","NEXT_PHASE","console","warn","error","fieldsConfig","admin","avatar","Component","clientProps","imageFieldName","image","name","loginButton","afterLogin","serverProps","label","collections","map","collection","authConfig","auth","disableLocalStrategy","strategies","hooks","afterLogout","set","logout","endpoints","path","method","handler","end_session","req","invokedBy","id","readOnly","index","unique","required","email","roles","roleFields","i18n","de","en","defaultZitadelPlugin"],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { AuthStrategy, Config, PayloadHandler, PayloadRequest, ServerProps } from 'payload';
1
+ import type { AuthStrategy, PayloadHandler, PayloadRequest, ServerProps } from 'payload';
2
2
  import type { I18nClient, NestedKeysStripped } from '@payloadcms/translations';
3
3
  import { translations } from './translations.js';
4
4
  export type ZitadelIdToken = Partial<{
@@ -90,11 +90,10 @@ type ZitadelComponentsConfig = {
90
90
  avatar: ZitadelAvatarConfig;
91
91
  loginButton: ZitadelLoginButtonConfig;
92
92
  };
93
- type ZitadelPluginConfig = Partial<ZitadelBaseConfig> & Partial<ZitadelUserConfig> & Partial<ZitadelStrategyConfig> & Partial<{
93
+ export type ZitadelPluginOptions = Partial<ZitadelBaseConfig> & Partial<ZitadelUserConfig> & Partial<ZitadelStrategyConfig> & Partial<{
94
94
  callbacks: Partial<ZitadelCallbackConfig>;
95
95
  components: Partial<ZitadelComponentsConfig>;
96
96
  }>;
97
- export type ZitadelPlugin = (config?: ZitadelPluginConfig) => (config: Config) => Config;
98
97
  type ZitadelAuthorizeRequestConfig = {
99
98
  codeChallenge: string;
100
99
  };
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types.ts"],"sourcesContent":["import type {AuthStrategy, Config, PayloadHandler, PayloadRequest, ServerProps} from 'payload'\nimport type {I18nClient, NestedKeysStripped} from '@payloadcms/translations'\nimport {translations} from './translations.js'\n\nexport type ZitadelIdToken = Partial<{\n sub: string\n name: string\n email: string\n picture: string\n 'urn:zitadel:iam:org:project:roles'?: Record<string, Record<string, string>>\n}>\n\ntype ZitadelFieldConfig = {\n hidden?: boolean\n name: string\n label: string | Record<string, string>\n}\n\nexport type ZitadelFieldsConfig = {\n id: ZitadelFieldConfig\n name: ZitadelFieldConfig\n email: ZitadelFieldConfig\n image: ZitadelFieldConfig\n roles: ZitadelFieldConfig & {\n labels: {\n singular: string | Record<string, string>\n plural: string | Record<string, string>\n }\n }\n roleFields: {\n name: ZitadelFieldConfig\n }\n}\n\ntype ZitadelBaseConfig = {\n issuerURL: string\n clientId: string\n}\n\ntype ZitadelUserConfig = {\n fields: ZitadelFieldsConfig\n}\n\nexport type ZitadelCallbackQuery = Partial<{\n code: string | null,\n state: string | null,\n}>\n\ntype ZitadelInvoker = 'authorize' | 'end_session'\n\ntype ZitadelInvokedBy<InvokedBy extends ZitadelInvoker = ZitadelInvoker> = {\n invokedBy: InvokedBy\n}\n\nexport type ZitadelCallbackState = Record<any, any> & ZitadelInvokedBy\n\nexport type ZitadelCallbackConfig = {\n afterLogin: PayloadHandler\n afterLogout: PayloadHandler\n}\n\nexport type ZitadelBaseHandler<ConfigExtension = {}> = (config: ZitadelBaseConfig & ConfigExtension) => PayloadHandler\n\nexport type ZitadelCallbackHandler = ZitadelBaseHandler<ZitadelUserConfig & ZitadelCallbackConfig>\n\ntype ZitadelBasicAuth = {\n clientId: string\n clientSecret: string\n}\n\nexport type ZitadelJWT = {\n type?: 'application'\n keyId: string\n key: string\n appId: string\n clientId: string\n}\n\ntype ZitadelAPIConfig = ({\n type: 'jwt'\n} & {\n jwt: ZitadelJWT\n}) | {\n type: 'basic'\n} & ZitadelBasicAuth\n\ntype ZitadelStrategyConfig = {\n strategyName: string\n api: ZitadelAPIConfig | false\n}\n\nexport type ZitadelStrategy = (config: Omit<ZitadelBaseConfig, 'clientId'> & ZitadelUserConfig & ZitadelStrategyConfig) => AuthStrategy\n\ntype ZitadelAvatarConfig = {\n disable: true\n}\n\nexport type ZitadelAvatarProps = {\n imageFieldName: string\n}\n\ntype ZitadelLoginButtonConfig = {\n disable: true\n label: string\n}\n\nexport type ZitadelLoginButtonProps = ServerProps & Omit<ZitadelLoginButtonConfig, 'disable'> & {\n i18n: I18nClient<typeof translations.en, NestedKeysStripped<typeof translations.en>>\n}\n\ntype ZitadelComponentsConfig = {\n avatar: ZitadelAvatarConfig\n loginButton: ZitadelLoginButtonConfig\n}\n\ntype ZitadelPluginConfig =\n Partial<ZitadelBaseConfig>\n & Partial<ZitadelUserConfig>\n & Partial<ZitadelStrategyConfig>\n & Partial<{\n callbacks: Partial<ZitadelCallbackConfig>\n components: Partial<ZitadelComponentsConfig>\n}>\n\nexport type ZitadelPlugin = (config?: ZitadelPluginConfig) => (config: Config) => Config\n\ntype ZitadelAuthorizeRequestConfig = {\n codeChallenge: string\n}\n\n\ntype ZitadelRequestState =\n (ZitadelInvokedBy<'authorize'> & ZitadelAuthorizeRequestConfig)\n | (ZitadelInvokedBy<'end_session'> & Partial<ZitadelAuthorizeRequestConfig>)\n\ntype ZitadelRequestConfig = {\n req: PayloadRequest\n} & ZitadelBaseConfig & ZitadelRequestState\n\nexport type ZitadelRequestHandler = (config: ZitadelRequestConfig) => Response\n\n\n"],"names":[],"mappings":"AA2IA,WAA8E"}
1
+ {"version":3,"sources":["../src/types.ts"],"sourcesContent":["import type {AuthStrategy, PayloadHandler, PayloadRequest, ServerProps} from 'payload'\nimport type {I18nClient, NestedKeysStripped} from '@payloadcms/translations'\nimport {translations} from './translations.js'\n\nexport type ZitadelIdToken = Partial<{\n sub: string\n name: string\n email: string\n picture: string\n 'urn:zitadel:iam:org:project:roles'?: Record<string, Record<string, string>>\n}>\n\ntype ZitadelFieldConfig = {\n hidden?: boolean\n name: string\n label: string | Record<string, string>\n}\n\nexport type ZitadelFieldsConfig = {\n id: ZitadelFieldConfig\n name: ZitadelFieldConfig\n email: ZitadelFieldConfig\n image: ZitadelFieldConfig\n roles: ZitadelFieldConfig & {\n labels: {\n singular: string | Record<string, string>\n plural: string | Record<string, string>\n }\n }\n roleFields: {\n name: ZitadelFieldConfig\n }\n}\n\ntype ZitadelBaseConfig = {\n issuerURL: string\n clientId: string\n}\n\ntype ZitadelUserConfig = {\n fields: ZitadelFieldsConfig\n}\n\nexport type ZitadelCallbackQuery = Partial<{\n code: string | null,\n state: string | null,\n}>\n\ntype ZitadelInvoker = 'authorize' | 'end_session'\n\ntype ZitadelInvokedBy<InvokedBy extends ZitadelInvoker = ZitadelInvoker> = {\n invokedBy: InvokedBy\n}\n\nexport type ZitadelCallbackState = Record<any, any> & ZitadelInvokedBy\n\nexport type ZitadelCallbackConfig = {\n afterLogin: PayloadHandler\n afterLogout: PayloadHandler\n}\n\nexport type ZitadelBaseHandler<ConfigExtension = {}> = (config: ZitadelBaseConfig & ConfigExtension) => PayloadHandler\n\nexport type ZitadelCallbackHandler = ZitadelBaseHandler<ZitadelUserConfig & ZitadelCallbackConfig>\n\ntype ZitadelBasicAuth = {\n clientId: string\n clientSecret: string\n}\n\nexport type ZitadelJWT = {\n type?: 'application'\n keyId: string\n key: string\n appId: string\n clientId: string\n}\n\ntype ZitadelAPIConfig = ({\n type: 'jwt'\n} & {\n jwt: ZitadelJWT\n}) | {\n type: 'basic'\n} & ZitadelBasicAuth\n\ntype ZitadelStrategyConfig = {\n strategyName: string\n api: ZitadelAPIConfig | false\n}\n\nexport type ZitadelStrategy = (config: Omit<ZitadelBaseConfig, 'clientId'> & ZitadelUserConfig & ZitadelStrategyConfig) => AuthStrategy\n\ntype ZitadelAvatarConfig = {\n disable: true\n}\n\nexport type ZitadelAvatarProps = {\n imageFieldName: string\n}\n\ntype ZitadelLoginButtonConfig = {\n disable: true\n label: string\n}\n\nexport type ZitadelLoginButtonProps = ServerProps & Omit<ZitadelLoginButtonConfig, 'disable'> & {\n i18n: I18nClient<typeof translations.en, NestedKeysStripped<typeof translations.en>>\n}\n\ntype ZitadelComponentsConfig = {\n avatar: ZitadelAvatarConfig\n loginButton: ZitadelLoginButtonConfig\n}\n\nexport type ZitadelPluginOptions =\n Partial<ZitadelBaseConfig>\n & Partial<ZitadelUserConfig>\n & Partial<ZitadelStrategyConfig>\n & Partial<{\n callbacks: Partial<ZitadelCallbackConfig>\n components: Partial<ZitadelComponentsConfig>\n}>\n\ntype ZitadelAuthorizeRequestConfig = {\n codeChallenge: string\n}\n\ntype ZitadelRequestState =\n (ZitadelInvokedBy<'authorize'> & ZitadelAuthorizeRequestConfig)\n | (ZitadelInvokedBy<'end_session'> & Partial<ZitadelAuthorizeRequestConfig>)\n\ntype ZitadelRequestConfig = {\n req: PayloadRequest\n} & ZitadelBaseConfig & ZitadelRequestState\n\nexport type ZitadelRequestHandler = (config: ZitadelRequestConfig) => Response\n\n\n"],"names":[],"mappings":"AAwIA,WAA8E"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "payload-zitadel-plugin",
3
- "version": "0.5.28",
3
+ "version": "0.5.30",
4
4
  "description": "plugin for Payload CMS, which enables authentication via Zitadel IdP",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -36,23 +36,23 @@
36
36
  "dist"
37
37
  ],
38
38
  "dependencies": {
39
- "@payloadcms/next": "^3.82.0",
40
- "@payloadcms/translations": "^3.82.0",
41
- "@payloadcms/ui": "^3.82.0",
39
+ "@payloadcms/next": "^3.84.0",
40
+ "@payloadcms/translations": "^3.84.0",
41
+ "@payloadcms/ui": "^3.84.0",
42
42
  "jose": "^6.2.2",
43
- "next": "^16.2.3",
44
- "payload": "^3.82.0",
43
+ "next": "^16.2.4",
44
+ "payload": "^3.84.0",
45
45
  "react": "^19.2.5",
46
46
  "react-dom": "^19.2.5"
47
47
  },
48
48
  "devDependencies": {
49
49
  "@swc/cli": "^0.8.1",
50
- "@swc/core": "^1.15.24",
51
- "@types/node": "^25.5.2",
50
+ "@swc/core": "^1.15.30",
51
+ "@types/node": "^25.6.0",
52
52
  "@types/react": "^19.2.14",
53
53
  "@types/react-dom": "^19.2.3",
54
54
  "rimraf": "^6.1.3",
55
- "typescript": "^6.0.2"
55
+ "typescript": "^6.0.3"
56
56
  },
57
57
  "engines": {
58
58
  "node": "^25.9.0"