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 +3 -3
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +65 -60
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +2 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +9 -9
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.
|
|
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 {
|
|
2
|
-
export declare const 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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
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 = (
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
errors
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
-
...
|
|
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
|
-
...
|
|
77
|
+
...config.admin?.components,
|
|
75
78
|
afterLogin: [
|
|
76
|
-
...
|
|
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: (
|
|
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(
|
|
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
|
-
...
|
|
195
|
+
...config.i18n,
|
|
193
196
|
translations: {
|
|
194
|
-
...
|
|
197
|
+
...config.i18n?.translations,
|
|
195
198
|
de: {
|
|
196
199
|
...translations.de,
|
|
197
|
-
...
|
|
200
|
+
...config.i18n?.translations?.de
|
|
198
201
|
},
|
|
199
202
|
en: {
|
|
200
203
|
...translations.en,
|
|
201
|
-
...
|
|
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,
|
|
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
|
|
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
|
};
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAE,
|
|
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,
|
|
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.
|
|
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.
|
|
40
|
-
"@payloadcms/translations": "^3.
|
|
41
|
-
"@payloadcms/ui": "^3.
|
|
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.
|
|
44
|
-
"payload": "^3.
|
|
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.
|
|
51
|
-
"@types/node": "^25.
|
|
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.
|
|
55
|
+
"typescript": "^6.0.3"
|
|
56
56
|
},
|
|
57
57
|
"engines": {
|
|
58
58
|
"node": "^25.9.0"
|