@jahia/agentic 0.4.0 → 0.4.1
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/CHANGELOG.md +4 -0
- package/dist/claude/.claude/rules/jahia.md +1 -37
- package/dist/claude/.claude/skills/jahia-cnd-author/SKILL.md +94 -0
- package/dist/claude/.claude/skills/jahia-cnd-author/references/cnd-area-types.md +55 -0
- package/dist/claude/.claude/skills/jahia-cnd-author/references/cnd-authoring-experience.md +92 -0
- package/dist/claude/.claude/skills/jahia-cnd-author/references/cnd-jahia-mixins.md +510 -0
- package/dist/claude/.claude/skills/jahia-cnd-author/references/cnd-modeling-decisions.md +87 -0
- package/dist/{opencode/.opencode/agents → claude/.claude/skills/jahia-cnd-author/references}/cnd-numbers-dates.md +32 -1
- package/dist/{opencode/.opencode/agents → claude/.claude/skills/jahia-cnd-author/references}/cnd-string-selectors.md +49 -10
- package/dist/claude/.claude/skills/jahia-cnd-author/references/cnd-syntax.md +119 -0
- package/dist/claude/.claude/skills/jahia-cnd-author/references/types-ts-mapping.md +73 -0
- package/dist/claude/.claude/skills/jahia-dev-accessibility/SKILL.md +5 -265
- package/dist/claude/.claude/skills/jahia-dev-build-component/SKILL.md +13 -8
- package/dist/claude/CLAUDE.md +2 -38
- package/dist/codex/.agents/skills/jahia-cnd-author/SKILL.md +94 -0
- package/dist/codex/.agents/skills/jahia-cnd-author/references/cnd-area-types.md +55 -0
- package/dist/codex/.agents/skills/jahia-cnd-author/references/cnd-authoring-experience.md +92 -0
- package/dist/codex/.agents/skills/jahia-cnd-author/references/cnd-jahia-mixins.md +510 -0
- package/dist/codex/.agents/skills/jahia-cnd-author/references/cnd-modeling-decisions.md +87 -0
- package/dist/{claude/.claude/agents → codex/.agents/skills/jahia-cnd-author/references}/cnd-numbers-dates.md +32 -1
- package/dist/{cursor/.cursor/agents → codex/.agents/skills/jahia-cnd-author/references}/cnd-string-selectors.md +49 -10
- package/dist/codex/.agents/skills/jahia-cnd-author/references/cnd-syntax.md +119 -0
- package/dist/codex/.agents/skills/jahia-cnd-author/references/types-ts-mapping.md +73 -0
- package/dist/codex/.agents/skills/jahia-dev-accessibility/SKILL.md +5 -265
- package/dist/codex/.agents/skills/jahia-dev-build-component/SKILL.md +13 -8
- package/dist/codex/AGENTS.md +2 -38
- package/dist/copilot/.agents/skills/jahia-cnd-author/SKILL.md +94 -0
- package/dist/copilot/.agents/skills/jahia-cnd-author/references/cnd-area-types.md +55 -0
- package/dist/copilot/.agents/skills/jahia-cnd-author/references/cnd-authoring-experience.md +92 -0
- package/dist/copilot/.agents/skills/jahia-cnd-author/references/cnd-jahia-mixins.md +510 -0
- package/dist/copilot/.agents/skills/jahia-cnd-author/references/cnd-modeling-decisions.md +87 -0
- package/dist/{cursor/.cursor/agents → copilot/.agents/skills/jahia-cnd-author/references}/cnd-numbers-dates.md +32 -1
- package/dist/{claude/.claude/agents → copilot/.agents/skills/jahia-cnd-author/references}/cnd-string-selectors.md +49 -10
- package/dist/copilot/.agents/skills/jahia-cnd-author/references/cnd-syntax.md +119 -0
- package/dist/copilot/.agents/skills/jahia-cnd-author/references/types-ts-mapping.md +73 -0
- package/dist/copilot/.agents/skills/jahia-dev-accessibility/SKILL.md +5 -265
- package/dist/copilot/.agents/skills/jahia-dev-build-component/SKILL.md +13 -8
- package/dist/copilot/AGENTS.md +2 -38
- package/dist/cursor/.agents/skills/jahia-cnd-author/SKILL.md +94 -0
- package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-area-types.md +55 -0
- package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-authoring-experience.md +92 -0
- package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-child-nodes.md +74 -0
- package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-jahia-mixins.md +510 -0
- package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-modeling-decisions.md +87 -0
- package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-numbers-dates.md +92 -0
- package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-string-selectors.md +133 -0
- package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-syntax.md +119 -0
- package/dist/cursor/.agents/skills/jahia-cnd-author/references/types-ts-mapping.md +73 -0
- package/dist/cursor/.agents/skills/jahia-dev-accessibility/SKILL.md +5 -265
- package/dist/cursor/.agents/skills/jahia-dev-build-component/SKILL.md +13 -8
- package/dist/cursor/.cursor/rules/jahia.mdc +1 -37
- package/dist/gemini/.agents/skills/jahia-cnd-author/SKILL.md +94 -0
- package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-area-types.md +55 -0
- package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-authoring-experience.md +92 -0
- package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-child-nodes.md +74 -0
- package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-jahia-mixins.md +510 -0
- package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-modeling-decisions.md +87 -0
- package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-numbers-dates.md +92 -0
- package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-string-selectors.md +133 -0
- package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-syntax.md +119 -0
- package/dist/gemini/.agents/skills/jahia-cnd-author/references/types-ts-mapping.md +73 -0
- package/dist/gemini/.agents/skills/jahia-dev-accessibility/SKILL.md +5 -265
- package/dist/gemini/.agents/skills/jahia-dev-build-component/SKILL.md +13 -8
- package/dist/gemini/AGENTS.md +2 -38
- package/dist/opencode/.agents/skills/jahia-cnd-author/SKILL.md +94 -0
- package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-area-types.md +55 -0
- package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-authoring-experience.md +92 -0
- package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-child-nodes.md +74 -0
- package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-jahia-mixins.md +510 -0
- package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-modeling-decisions.md +87 -0
- package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-numbers-dates.md +92 -0
- package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-string-selectors.md +133 -0
- package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-syntax.md +119 -0
- package/dist/opencode/.agents/skills/jahia-cnd-author/references/types-ts-mapping.md +73 -0
- package/dist/opencode/.agents/skills/jahia-dev-accessibility/SKILL.md +5 -265
- package/dist/opencode/.agents/skills/jahia-dev-build-component/SKILL.md +13 -8
- package/dist/opencode/AGENTS.md +2 -38
- package/dist/windsurf/.windsurf/rules/jahia.md +1 -37
- package/dist/windsurf/.windsurf/skills/jahia-cnd-author/SKILL.md +94 -0
- package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-area-types.md +55 -0
- package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-authoring-experience.md +92 -0
- package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-child-nodes.md +74 -0
- package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-jahia-mixins.md +510 -0
- package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-modeling-decisions.md +87 -0
- package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-numbers-dates.md +92 -0
- package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-string-selectors.md +133 -0
- package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-syntax.md +119 -0
- package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/types-ts-mapping.md +73 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-accessibility/SKILL.md +5 -265
- package/dist/windsurf/.windsurf/skills/jahia-dev-build-component/SKILL.md +13 -8
- package/dist/windsurf/AGENTS.md +2 -38
- package/package.json +1 -1
- package/dist/claude/.claude/agents/cnd-jahia-mixins.md +0 -113
- package/dist/claude/.claude/agents/jahia-cnd-author.md +0 -130
- package/dist/claude/.claude/agents/jahia-dev-worker.md +0 -264
- package/dist/claude/.claude/agents/jahia-reviewer.md +0 -105
- package/dist/claude/.claude/skills/jahia/SKILL.md +0 -148
- package/dist/claude/.claude/skills/jahia-content/SKILL.md +0 -157
- package/dist/claude/.claude/skills/jahia-content-create-content/SKILL.md +0 -359
- package/dist/claude/.claude/skills/jahia-content-explore-structure/SKILL.md +0 -255
- package/dist/claude/.claude/skills/jahia-content-media-upload/SKILL.md +0 -197
- package/dist/claude/.claude/skills/jahia-content-move-content/SKILL.md +0 -231
- package/dist/claude/.claude/skills/jahia-content-organize/SKILL.md +0 -209
- package/dist/claude/.claude/skills/jahia-content-publish/SKILL.md +0 -181
- package/dist/claude/.claude/skills/jahia-content-query-content/SKILL.md +0 -174
- package/dist/claude/.claude/skills/jahia-content-translate-content/SKILL.md +0 -226
- package/dist/claude/.claude/skills/jahia-dev/SKILL.md +0 -124
- package/dist/claude/.claude/skills/jahia-dev-apis/SKILL.md +0 -52
- package/dist/claude/.claude/skills/jahia-dev-apis/references/authentication.md +0 -484
- package/dist/claude/.claude/skills/jahia-dev-apis/references/graphql.md +0 -657
- package/dist/claude/.claude/skills/jahia-dev-apis/references/jcr-api.md +0 -465
- package/dist/claude/.claude/skills/jahia-dev-apis/references/security.md +0 -541
- package/dist/claude/.claude/skills/jahia-dev-cypress/SKILL.md +0 -265
- package/dist/claude/.claude/skills/jahia-dev-define-content-type/SKILL.md +0 -93
- package/dist/claude/.claude/skills/jahia-dev-define-content-type/references/modeling-decisions.md +0 -52
- package/dist/claude/.claude/skills/jahia-dev-java/SKILL.md +0 -110
- package/dist/claude/.claude/skills/jahia-dev-java/references/backend.md +0 -331
- package/dist/claude/.claude/skills/jahia-dev-java/references/content-types.md +0 -273
- package/dist/claude/.claude/skills/jahia-dev-java/references/modules.md +0 -218
- package/dist/claude/.claude/skills/jahia-dev-java/references/osgi.md +0 -208
- package/dist/claude/.claude/skills/jahia-dev-java/references/rendering.md +0 -191
- package/dist/claude/.claude/skills/jahia-dev-java/references/ui-extensions.md +0 -344
- package/dist/claude/.claude/skills/jahia-dev-osgi-module/SKILL.md +0 -297
- package/dist/claude/.claude/skills/jahia-dev-ui-extension/SKILL.md +0 -559
- package/dist/claude/.claude/skills/jahia-java-concurrency/SKILL.md +0 -308
- package/dist/claude/.claude/skills/jahia-java-jcr/SKILL.md +0 -153
- package/dist/claude/.claude/skills/jahia-java-osgi/SKILL.md +0 -134
- package/dist/claude/.claude/skills/jahia-java-persistence/SKILL.md +0 -177
- package/dist/claude/.claude/skills/jahia-java-security/SKILL.md +0 -84
- package/dist/claude/.claude/skills/jahia-orchestrate/SKILL.md +0 -148
- package/dist/claude/.claude/skills/jahia-orchestrate/scripts/verify-pages.mjs +0 -59
- package/dist/claude/.claude/skills/jahia-review-java/SKILL.md +0 -131
- package/dist/claude/.claude/skills/jahia-review-java/references/code-review-output.md +0 -121
- package/dist/codex/.agents/skills/jahia/SKILL.md +0 -148
- package/dist/codex/.agents/skills/jahia-content/SKILL.md +0 -157
- package/dist/codex/.agents/skills/jahia-content-create-content/SKILL.md +0 -359
- package/dist/codex/.agents/skills/jahia-content-explore-structure/SKILL.md +0 -255
- package/dist/codex/.agents/skills/jahia-content-media-upload/SKILL.md +0 -197
- package/dist/codex/.agents/skills/jahia-content-move-content/SKILL.md +0 -231
- package/dist/codex/.agents/skills/jahia-content-organize/SKILL.md +0 -209
- package/dist/codex/.agents/skills/jahia-content-publish/SKILL.md +0 -181
- package/dist/codex/.agents/skills/jahia-content-query-content/SKILL.md +0 -174
- package/dist/codex/.agents/skills/jahia-content-translate-content/SKILL.md +0 -226
- package/dist/codex/.agents/skills/jahia-dev/SKILL.md +0 -124
- package/dist/codex/.agents/skills/jahia-dev-apis/SKILL.md +0 -52
- package/dist/codex/.agents/skills/jahia-dev-apis/references/authentication.md +0 -484
- package/dist/codex/.agents/skills/jahia-dev-apis/references/graphql.md +0 -657
- package/dist/codex/.agents/skills/jahia-dev-apis/references/jcr-api.md +0 -465
- package/dist/codex/.agents/skills/jahia-dev-apis/references/security.md +0 -541
- package/dist/codex/.agents/skills/jahia-dev-cypress/SKILL.md +0 -265
- package/dist/codex/.agents/skills/jahia-dev-define-content-type/SKILL.md +0 -93
- package/dist/codex/.agents/skills/jahia-dev-define-content-type/references/modeling-decisions.md +0 -52
- package/dist/codex/.agents/skills/jahia-dev-java/SKILL.md +0 -110
- package/dist/codex/.agents/skills/jahia-dev-java/references/backend.md +0 -331
- package/dist/codex/.agents/skills/jahia-dev-java/references/content-types.md +0 -273
- package/dist/codex/.agents/skills/jahia-dev-java/references/modules.md +0 -218
- package/dist/codex/.agents/skills/jahia-dev-java/references/osgi.md +0 -208
- package/dist/codex/.agents/skills/jahia-dev-java/references/rendering.md +0 -191
- package/dist/codex/.agents/skills/jahia-dev-java/references/ui-extensions.md +0 -344
- package/dist/codex/.agents/skills/jahia-dev-osgi-module/SKILL.md +0 -297
- package/dist/codex/.agents/skills/jahia-dev-ui-extension/SKILL.md +0 -559
- package/dist/codex/.agents/skills/jahia-java-concurrency/SKILL.md +0 -308
- package/dist/codex/.agents/skills/jahia-java-jcr/SKILL.md +0 -153
- package/dist/codex/.agents/skills/jahia-java-osgi/SKILL.md +0 -134
- package/dist/codex/.agents/skills/jahia-java-persistence/SKILL.md +0 -177
- package/dist/codex/.agents/skills/jahia-java-security/SKILL.md +0 -84
- package/dist/codex/.agents/skills/jahia-orchestrate/SKILL.md +0 -148
- package/dist/codex/.agents/skills/jahia-orchestrate/scripts/verify-pages.mjs +0 -59
- package/dist/codex/.agents/skills/jahia-review-java/SKILL.md +0 -131
- package/dist/codex/.agents/skills/jahia-review-java/references/code-review-output.md +0 -121
- package/dist/codex/.codex/agents/cnd-child-nodes.toml +0 -3
- package/dist/codex/.codex/agents/cnd-jahia-mixins.toml +0 -3
- package/dist/codex/.codex/agents/cnd-numbers-dates.toml +0 -3
- package/dist/codex/.codex/agents/cnd-string-selectors.toml +0 -3
- package/dist/codex/.codex/agents/jahia-cnd-author.toml +0 -3
- package/dist/codex/.codex/agents/jahia-dev-worker.toml +0 -3
- package/dist/codex/.codex/agents/jahia-reviewer.toml +0 -3
- package/dist/copilot/.agents/skills/jahia/SKILL.md +0 -148
- package/dist/copilot/.agents/skills/jahia-content/SKILL.md +0 -157
- package/dist/copilot/.agents/skills/jahia-content-create-content/SKILL.md +0 -359
- package/dist/copilot/.agents/skills/jahia-content-explore-structure/SKILL.md +0 -255
- package/dist/copilot/.agents/skills/jahia-content-media-upload/SKILL.md +0 -197
- package/dist/copilot/.agents/skills/jahia-content-move-content/SKILL.md +0 -231
- package/dist/copilot/.agents/skills/jahia-content-organize/SKILL.md +0 -209
- package/dist/copilot/.agents/skills/jahia-content-publish/SKILL.md +0 -181
- package/dist/copilot/.agents/skills/jahia-content-query-content/SKILL.md +0 -174
- package/dist/copilot/.agents/skills/jahia-content-translate-content/SKILL.md +0 -226
- package/dist/copilot/.agents/skills/jahia-dev/SKILL.md +0 -124
- package/dist/copilot/.agents/skills/jahia-dev-apis/SKILL.md +0 -52
- package/dist/copilot/.agents/skills/jahia-dev-apis/references/authentication.md +0 -484
- package/dist/copilot/.agents/skills/jahia-dev-apis/references/graphql.md +0 -657
- package/dist/copilot/.agents/skills/jahia-dev-apis/references/jcr-api.md +0 -465
- package/dist/copilot/.agents/skills/jahia-dev-apis/references/security.md +0 -541
- package/dist/copilot/.agents/skills/jahia-dev-cypress/SKILL.md +0 -265
- package/dist/copilot/.agents/skills/jahia-dev-define-content-type/SKILL.md +0 -93
- package/dist/copilot/.agents/skills/jahia-dev-define-content-type/references/modeling-decisions.md +0 -52
- package/dist/copilot/.agents/skills/jahia-dev-java/SKILL.md +0 -110
- package/dist/copilot/.agents/skills/jahia-dev-java/references/backend.md +0 -331
- package/dist/copilot/.agents/skills/jahia-dev-java/references/content-types.md +0 -273
- package/dist/copilot/.agents/skills/jahia-dev-java/references/modules.md +0 -218
- package/dist/copilot/.agents/skills/jahia-dev-java/references/osgi.md +0 -208
- package/dist/copilot/.agents/skills/jahia-dev-java/references/rendering.md +0 -191
- package/dist/copilot/.agents/skills/jahia-dev-java/references/ui-extensions.md +0 -344
- package/dist/copilot/.agents/skills/jahia-dev-osgi-module/SKILL.md +0 -297
- package/dist/copilot/.agents/skills/jahia-dev-ui-extension/SKILL.md +0 -559
- package/dist/copilot/.agents/skills/jahia-java-concurrency/SKILL.md +0 -308
- package/dist/copilot/.agents/skills/jahia-java-jcr/SKILL.md +0 -153
- package/dist/copilot/.agents/skills/jahia-java-osgi/SKILL.md +0 -134
- package/dist/copilot/.agents/skills/jahia-java-persistence/SKILL.md +0 -177
- package/dist/copilot/.agents/skills/jahia-java-security/SKILL.md +0 -84
- package/dist/copilot/.agents/skills/jahia-orchestrate/SKILL.md +0 -148
- package/dist/copilot/.agents/skills/jahia-orchestrate/scripts/verify-pages.mjs +0 -59
- package/dist/copilot/.agents/skills/jahia-review-java/SKILL.md +0 -131
- package/dist/copilot/.agents/skills/jahia-review-java/references/code-review-output.md +0 -121
- package/dist/cursor/.agents/skills/jahia/SKILL.md +0 -148
- package/dist/cursor/.agents/skills/jahia-content/SKILL.md +0 -157
- package/dist/cursor/.agents/skills/jahia-content-create-content/SKILL.md +0 -359
- package/dist/cursor/.agents/skills/jahia-content-explore-structure/SKILL.md +0 -255
- package/dist/cursor/.agents/skills/jahia-content-media-upload/SKILL.md +0 -197
- package/dist/cursor/.agents/skills/jahia-content-move-content/SKILL.md +0 -231
- package/dist/cursor/.agents/skills/jahia-content-organize/SKILL.md +0 -209
- package/dist/cursor/.agents/skills/jahia-content-publish/SKILL.md +0 -181
- package/dist/cursor/.agents/skills/jahia-content-query-content/SKILL.md +0 -174
- package/dist/cursor/.agents/skills/jahia-content-translate-content/SKILL.md +0 -226
- package/dist/cursor/.agents/skills/jahia-dev/SKILL.md +0 -124
- package/dist/cursor/.agents/skills/jahia-dev-apis/SKILL.md +0 -52
- package/dist/cursor/.agents/skills/jahia-dev-apis/references/authentication.md +0 -484
- package/dist/cursor/.agents/skills/jahia-dev-apis/references/graphql.md +0 -657
- package/dist/cursor/.agents/skills/jahia-dev-apis/references/jcr-api.md +0 -465
- package/dist/cursor/.agents/skills/jahia-dev-apis/references/security.md +0 -541
- package/dist/cursor/.agents/skills/jahia-dev-cypress/SKILL.md +0 -265
- package/dist/cursor/.agents/skills/jahia-dev-define-content-type/SKILL.md +0 -93
- package/dist/cursor/.agents/skills/jahia-dev-define-content-type/references/modeling-decisions.md +0 -52
- package/dist/cursor/.agents/skills/jahia-dev-java/SKILL.md +0 -110
- package/dist/cursor/.agents/skills/jahia-dev-java/references/backend.md +0 -331
- package/dist/cursor/.agents/skills/jahia-dev-java/references/content-types.md +0 -273
- package/dist/cursor/.agents/skills/jahia-dev-java/references/modules.md +0 -218
- package/dist/cursor/.agents/skills/jahia-dev-java/references/osgi.md +0 -208
- package/dist/cursor/.agents/skills/jahia-dev-java/references/rendering.md +0 -191
- package/dist/cursor/.agents/skills/jahia-dev-java/references/ui-extensions.md +0 -344
- package/dist/cursor/.agents/skills/jahia-dev-osgi-module/SKILL.md +0 -297
- package/dist/cursor/.agents/skills/jahia-dev-ui-extension/SKILL.md +0 -559
- package/dist/cursor/.agents/skills/jahia-java-concurrency/SKILL.md +0 -308
- package/dist/cursor/.agents/skills/jahia-java-jcr/SKILL.md +0 -153
- package/dist/cursor/.agents/skills/jahia-java-osgi/SKILL.md +0 -134
- package/dist/cursor/.agents/skills/jahia-java-persistence/SKILL.md +0 -177
- package/dist/cursor/.agents/skills/jahia-java-security/SKILL.md +0 -84
- package/dist/cursor/.agents/skills/jahia-orchestrate/SKILL.md +0 -148
- package/dist/cursor/.agents/skills/jahia-orchestrate/scripts/verify-pages.mjs +0 -59
- package/dist/cursor/.agents/skills/jahia-review-java/SKILL.md +0 -131
- package/dist/cursor/.agents/skills/jahia-review-java/references/code-review-output.md +0 -121
- package/dist/cursor/.cursor/agents/cnd-jahia-mixins.md +0 -113
- package/dist/cursor/.cursor/agents/jahia-cnd-author.md +0 -130
- package/dist/cursor/.cursor/agents/jahia-dev-worker.md +0 -264
- package/dist/cursor/.cursor/agents/jahia-reviewer.md +0 -105
- package/dist/gemini/.agents/skills/jahia/SKILL.md +0 -148
- package/dist/gemini/.agents/skills/jahia-content/SKILL.md +0 -157
- package/dist/gemini/.agents/skills/jahia-content-create-content/SKILL.md +0 -359
- package/dist/gemini/.agents/skills/jahia-content-explore-structure/SKILL.md +0 -255
- package/dist/gemini/.agents/skills/jahia-content-media-upload/SKILL.md +0 -197
- package/dist/gemini/.agents/skills/jahia-content-move-content/SKILL.md +0 -231
- package/dist/gemini/.agents/skills/jahia-content-organize/SKILL.md +0 -209
- package/dist/gemini/.agents/skills/jahia-content-publish/SKILL.md +0 -181
- package/dist/gemini/.agents/skills/jahia-content-query-content/SKILL.md +0 -174
- package/dist/gemini/.agents/skills/jahia-content-translate-content/SKILL.md +0 -226
- package/dist/gemini/.agents/skills/jahia-dev/SKILL.md +0 -124
- package/dist/gemini/.agents/skills/jahia-dev-apis/SKILL.md +0 -52
- package/dist/gemini/.agents/skills/jahia-dev-apis/references/authentication.md +0 -484
- package/dist/gemini/.agents/skills/jahia-dev-apis/references/graphql.md +0 -657
- package/dist/gemini/.agents/skills/jahia-dev-apis/references/jcr-api.md +0 -465
- package/dist/gemini/.agents/skills/jahia-dev-apis/references/security.md +0 -541
- package/dist/gemini/.agents/skills/jahia-dev-cypress/SKILL.md +0 -265
- package/dist/gemini/.agents/skills/jahia-dev-define-content-type/SKILL.md +0 -93
- package/dist/gemini/.agents/skills/jahia-dev-define-content-type/references/modeling-decisions.md +0 -52
- package/dist/gemini/.agents/skills/jahia-dev-java/SKILL.md +0 -110
- package/dist/gemini/.agents/skills/jahia-dev-java/references/backend.md +0 -331
- package/dist/gemini/.agents/skills/jahia-dev-java/references/content-types.md +0 -273
- package/dist/gemini/.agents/skills/jahia-dev-java/references/modules.md +0 -218
- package/dist/gemini/.agents/skills/jahia-dev-java/references/osgi.md +0 -208
- package/dist/gemini/.agents/skills/jahia-dev-java/references/rendering.md +0 -191
- package/dist/gemini/.agents/skills/jahia-dev-java/references/ui-extensions.md +0 -344
- package/dist/gemini/.agents/skills/jahia-dev-osgi-module/SKILL.md +0 -297
- package/dist/gemini/.agents/skills/jahia-dev-ui-extension/SKILL.md +0 -559
- package/dist/gemini/.agents/skills/jahia-java-concurrency/SKILL.md +0 -308
- package/dist/gemini/.agents/skills/jahia-java-jcr/SKILL.md +0 -153
- package/dist/gemini/.agents/skills/jahia-java-osgi/SKILL.md +0 -134
- package/dist/gemini/.agents/skills/jahia-java-persistence/SKILL.md +0 -177
- package/dist/gemini/.agents/skills/jahia-java-security/SKILL.md +0 -84
- package/dist/gemini/.agents/skills/jahia-orchestrate/SKILL.md +0 -148
- package/dist/gemini/.agents/skills/jahia-orchestrate/scripts/verify-pages.mjs +0 -59
- package/dist/gemini/.agents/skills/jahia-review-java/SKILL.md +0 -131
- package/dist/gemini/.agents/skills/jahia-review-java/references/code-review-output.md +0 -121
- package/dist/opencode/.agents/skills/jahia/SKILL.md +0 -148
- package/dist/opencode/.agents/skills/jahia-content/SKILL.md +0 -157
- package/dist/opencode/.agents/skills/jahia-content-create-content/SKILL.md +0 -359
- package/dist/opencode/.agents/skills/jahia-content-explore-structure/SKILL.md +0 -255
- package/dist/opencode/.agents/skills/jahia-content-media-upload/SKILL.md +0 -197
- package/dist/opencode/.agents/skills/jahia-content-move-content/SKILL.md +0 -231
- package/dist/opencode/.agents/skills/jahia-content-organize/SKILL.md +0 -209
- package/dist/opencode/.agents/skills/jahia-content-publish/SKILL.md +0 -181
- package/dist/opencode/.agents/skills/jahia-content-query-content/SKILL.md +0 -174
- package/dist/opencode/.agents/skills/jahia-content-translate-content/SKILL.md +0 -226
- package/dist/opencode/.agents/skills/jahia-dev/SKILL.md +0 -124
- package/dist/opencode/.agents/skills/jahia-dev-apis/SKILL.md +0 -52
- package/dist/opencode/.agents/skills/jahia-dev-apis/references/authentication.md +0 -484
- package/dist/opencode/.agents/skills/jahia-dev-apis/references/graphql.md +0 -657
- package/dist/opencode/.agents/skills/jahia-dev-apis/references/jcr-api.md +0 -465
- package/dist/opencode/.agents/skills/jahia-dev-apis/references/security.md +0 -541
- package/dist/opencode/.agents/skills/jahia-dev-cypress/SKILL.md +0 -265
- package/dist/opencode/.agents/skills/jahia-dev-define-content-type/SKILL.md +0 -93
- package/dist/opencode/.agents/skills/jahia-dev-define-content-type/references/modeling-decisions.md +0 -52
- package/dist/opencode/.agents/skills/jahia-dev-java/SKILL.md +0 -110
- package/dist/opencode/.agents/skills/jahia-dev-java/references/backend.md +0 -331
- package/dist/opencode/.agents/skills/jahia-dev-java/references/content-types.md +0 -273
- package/dist/opencode/.agents/skills/jahia-dev-java/references/modules.md +0 -218
- package/dist/opencode/.agents/skills/jahia-dev-java/references/osgi.md +0 -208
- package/dist/opencode/.agents/skills/jahia-dev-java/references/rendering.md +0 -191
- package/dist/opencode/.agents/skills/jahia-dev-java/references/ui-extensions.md +0 -344
- package/dist/opencode/.agents/skills/jahia-dev-osgi-module/SKILL.md +0 -297
- package/dist/opencode/.agents/skills/jahia-dev-ui-extension/SKILL.md +0 -559
- package/dist/opencode/.agents/skills/jahia-java-concurrency/SKILL.md +0 -308
- package/dist/opencode/.agents/skills/jahia-java-jcr/SKILL.md +0 -153
- package/dist/opencode/.agents/skills/jahia-java-osgi/SKILL.md +0 -134
- package/dist/opencode/.agents/skills/jahia-java-persistence/SKILL.md +0 -177
- package/dist/opencode/.agents/skills/jahia-java-security/SKILL.md +0 -84
- package/dist/opencode/.agents/skills/jahia-orchestrate/SKILL.md +0 -148
- package/dist/opencode/.agents/skills/jahia-orchestrate/scripts/verify-pages.mjs +0 -59
- package/dist/opencode/.agents/skills/jahia-review-java/SKILL.md +0 -131
- package/dist/opencode/.agents/skills/jahia-review-java/references/code-review-output.md +0 -121
- package/dist/opencode/.opencode/agents/cnd-jahia-mixins.md +0 -113
- package/dist/opencode/.opencode/agents/jahia-cnd-author.md +0 -130
- package/dist/opencode/.opencode/agents/jahia-dev-worker.md +0 -264
- package/dist/opencode/.opencode/agents/jahia-reviewer.md +0 -105
- package/dist/windsurf/.windsurf/skills/jahia/SKILL.md +0 -148
- package/dist/windsurf/.windsurf/skills/jahia-content/SKILL.md +0 -157
- package/dist/windsurf/.windsurf/skills/jahia-content-create-content/SKILL.md +0 -359
- package/dist/windsurf/.windsurf/skills/jahia-content-explore-structure/SKILL.md +0 -255
- package/dist/windsurf/.windsurf/skills/jahia-content-media-upload/SKILL.md +0 -197
- package/dist/windsurf/.windsurf/skills/jahia-content-move-content/SKILL.md +0 -231
- package/dist/windsurf/.windsurf/skills/jahia-content-organize/SKILL.md +0 -209
- package/dist/windsurf/.windsurf/skills/jahia-content-publish/SKILL.md +0 -181
- package/dist/windsurf/.windsurf/skills/jahia-content-query-content/SKILL.md +0 -174
- package/dist/windsurf/.windsurf/skills/jahia-content-translate-content/SKILL.md +0 -226
- package/dist/windsurf/.windsurf/skills/jahia-dev/SKILL.md +0 -124
- package/dist/windsurf/.windsurf/skills/jahia-dev-apis/SKILL.md +0 -52
- package/dist/windsurf/.windsurf/skills/jahia-dev-apis/references/authentication.md +0 -484
- package/dist/windsurf/.windsurf/skills/jahia-dev-apis/references/graphql.md +0 -657
- package/dist/windsurf/.windsurf/skills/jahia-dev-apis/references/jcr-api.md +0 -465
- package/dist/windsurf/.windsurf/skills/jahia-dev-apis/references/security.md +0 -541
- package/dist/windsurf/.windsurf/skills/jahia-dev-cypress/SKILL.md +0 -265
- package/dist/windsurf/.windsurf/skills/jahia-dev-define-content-type/SKILL.md +0 -93
- package/dist/windsurf/.windsurf/skills/jahia-dev-define-content-type/references/modeling-decisions.md +0 -52
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/SKILL.md +0 -110
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/backend.md +0 -331
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/content-types.md +0 -273
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/modules.md +0 -218
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/osgi.md +0 -208
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/rendering.md +0 -191
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/ui-extensions.md +0 -344
- package/dist/windsurf/.windsurf/skills/jahia-dev-osgi-module/SKILL.md +0 -297
- package/dist/windsurf/.windsurf/skills/jahia-dev-ui-extension/SKILL.md +0 -559
- package/dist/windsurf/.windsurf/skills/jahia-java-concurrency/SKILL.md +0 -308
- package/dist/windsurf/.windsurf/skills/jahia-java-jcr/SKILL.md +0 -153
- package/dist/windsurf/.windsurf/skills/jahia-java-osgi/SKILL.md +0 -134
- package/dist/windsurf/.windsurf/skills/jahia-java-persistence/SKILL.md +0 -177
- package/dist/windsurf/.windsurf/skills/jahia-java-security/SKILL.md +0 -84
- package/dist/windsurf/.windsurf/skills/jahia-orchestrate/SKILL.md +0 -148
- package/dist/windsurf/.windsurf/skills/jahia-orchestrate/scripts/verify-pages.mjs +0 -59
- package/dist/windsurf/.windsurf/skills/jahia-review-java/SKILL.md +0 -131
- package/dist/windsurf/.windsurf/skills/jahia-review-java/references/code-review-output.md +0 -121
- /package/dist/claude/.claude/{agents → skills/jahia-cnd-author/references}/cnd-child-nodes.md +0 -0
- /package/dist/{cursor/.cursor/agents → codex/.agents/skills/jahia-cnd-author/references}/cnd-child-nodes.md +0 -0
- /package/dist/{opencode/.opencode/agents → copilot/.agents/skills/jahia-cnd-author/references}/cnd-child-nodes.md +0 -0
|
@@ -1,484 +0,0 @@
|
|
|
1
|
-
# Authentication Reference
|
|
2
|
-
|
|
3
|
-
Covers personal API tokens, OAuth 2.0 social login, SAML 2.0, and the UPA (username/password + MFA) module.
|
|
4
|
-
|
|
5
|
-
## Table of Contents
|
|
6
|
-
|
|
7
|
-
- [Personal API Tokens](#personal-api-tokens)
|
|
8
|
-
- [Module installation](#module-installation)
|
|
9
|
-
- [Creating a token via admin UI](#creating-a-token-via-admin-ui)
|
|
10
|
-
- [Using tokens in API calls](#using-tokens-in-api-calls)
|
|
11
|
-
- [Managing tokens](#managing-tokens)
|
|
12
|
-
- [Managing tokens via GraphQL](#managing-tokens-via-graphql)
|
|
13
|
-
- [Managing tokens via filesystem (Groovy)](#managing-tokens-via-filesystem-groovy)
|
|
14
|
-
- [OAuth 2.0 — Social Login](#oauth-20--social-login)
|
|
15
|
-
- [Available connectors](#available-connectors)
|
|
16
|
-
- [Required modules](#required-modules)
|
|
17
|
-
- [Configuring a social connector](#configuring-a-social-connector)
|
|
18
|
-
- [Mapping user fields](#mapping-user-fields)
|
|
19
|
-
- [Adding social login buttons to pages](#adding-social-login-buttons-to-pages)
|
|
20
|
-
- [Building a custom OAuth connector](#building-a-custom-oauth-connector)
|
|
21
|
-
- [SAML 2.0](#saml-20)
|
|
22
|
-
- [Module installation](#module-installation-1)
|
|
23
|
-
- [Creating a keystore](#creating-a-keystore)
|
|
24
|
-
- [Configuring SAML in Site Settings](#configuring-saml-in-site-settings)
|
|
25
|
-
- [Configuration file example](#configuration-file-example)
|
|
26
|
-
- [Mapping users from IdP](#mapping-users-from-idp)
|
|
27
|
-
- [Triggering SAML login](#triggering-saml-login)
|
|
28
|
-
- [Private pages and SAML authentication](#private-pages-and-saml-authentication)
|
|
29
|
-
- [UPA — User Password Authentication Module](#upa--user-password-authentication-module)
|
|
30
|
-
- [What it adds over default auth](#what-it-adds-over-default-auth)
|
|
31
|
-
- [Prerequisites](#prerequisites)
|
|
32
|
-
- [Installation](#installation)
|
|
33
|
-
- [Setup: login URL provider](#setup-login-url-provider)
|
|
34
|
-
- [Authentication flow](#authentication-flow)
|
|
35
|
-
- [Customization](#customization)
|
|
36
|
-
- [Known limitations](#known-limitations)
|
|
37
|
-
|
|
38
|
-
---
|
|
39
|
-
|
|
40
|
-
## Personal API Tokens
|
|
41
|
-
|
|
42
|
-
Module ID: `personal-api-tokens`. Compatible with Jahia 8.0.1+. Tokens are stored in the JCR and persist across upgrades.
|
|
43
|
-
|
|
44
|
-
**Key concept:** A token is tied to its creator's account and inherits that user's permissions. Create one token per external service — if a token is compromised, revoke only that token without affecting others.
|
|
45
|
-
|
|
46
|
-
### Module installation
|
|
47
|
-
|
|
48
|
-
Install via **Jahia Administration > Modules and Extensions > Modules**. Requires the module to be deployed on the server (not per site).
|
|
49
|
-
|
|
50
|
-
### Creating a token via admin UI
|
|
51
|
-
|
|
52
|
-
1. Navigate to **Dashboard > My API tokens**.
|
|
53
|
-
2. Click **Create Token**.
|
|
54
|
-
3. Provide a **Name** (unique per user) and an optional **Expiration date**.
|
|
55
|
-
4. Click **Create**. The token string is shown **once only** — copy it immediately.
|
|
56
|
-
|
|
57
|
-
Access to this page requires the **"Personal api tokens"** server role permission. "Live role" or "Edit role" is not sufficient.
|
|
58
|
-
|
|
59
|
-
### Using tokens in API calls
|
|
60
|
-
|
|
61
|
-
Pass the token in the `Authorization` header prefixed with `APIToken`:
|
|
62
|
-
|
|
63
|
-
```
|
|
64
|
-
Authorization: APIToken <your-token-value>
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
**cURL example:**
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
curl -H "Authorization: APIToken XXXXXXXXXX" https://JAHIA_URL/modules/healthcheck
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
**Apollo Client (TypeScript) example:**
|
|
74
|
-
|
|
75
|
-
```typescript
|
|
76
|
-
export const apolloClient = (token: string): ApolloClient => {
|
|
77
|
-
return new ApolloClient({
|
|
78
|
-
link: new HttpLink({
|
|
79
|
-
uri: `JAHIA_URL/modules/graphql`,
|
|
80
|
-
headers: {
|
|
81
|
-
authorization: `APIToken ${token}`
|
|
82
|
-
}
|
|
83
|
-
}),
|
|
84
|
-
cache: new InMemoryCache(),
|
|
85
|
-
defaultOptions: {
|
|
86
|
-
query: { fetchPolicy: 'no-cache' }
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
};
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
### Managing tokens
|
|
93
|
-
|
|
94
|
-
From **Dashboard > My API tokens**, you can view token name, access key, expiration date, and status. Actions: **Delete**, **Activate**, **Disable**.
|
|
95
|
-
|
|
96
|
-
Admins can manage other users' tokens at **Administration > Users and Roles > User API tokens** (requires the "Admin personal api tokens" server administration permission). Admins can disable/delete but cannot create tokens for other users.
|
|
97
|
-
|
|
98
|
-
### Managing tokens via GraphQL
|
|
99
|
-
|
|
100
|
-
Entry point: `admin.personalAPITokens`. Additional operations beyond the UI:
|
|
101
|
-
|
|
102
|
-
- `verifyToken` — check if a token is valid
|
|
103
|
-
- Update a token's name or expiry date
|
|
104
|
-
|
|
105
|
-
### Managing tokens via filesystem (Groovy)
|
|
106
|
-
|
|
107
|
-
Useful for automating token creation on first Jahia startup. Place Groovy scripts in `digital-factory-data/patches/groovy/`. Use the CLI tool to generate valid token strings:
|
|
108
|
-
|
|
109
|
-
```bash
|
|
110
|
-
git clone git@github.com:Jahia/personal-api-token
|
|
111
|
-
cd personal-api-token && mvn clean install
|
|
112
|
-
cd target && java -jar personal-api-tokens-1.6.0-cli.jar
|
|
113
|
-
# Output: {"token": "b765L5rY...", "key": "6fbeb92f-..."}
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
**Create a token via Groovy:**
|
|
117
|
-
|
|
118
|
-
```groovy
|
|
119
|
-
setResult("remove");
|
|
120
|
-
org.jahia.services.content.JCRTemplate.getInstance().doExecuteWithSystemSession({ session ->
|
|
121
|
-
org.jahia.osgi.BundleUtils.getOsgiService("org.jahia.modules.apitokens.TokenService")
|
|
122
|
-
.tokenBuilder("/users/root", "test-token12345", session)
|
|
123
|
-
.setToken("kgHNm05iQV61I+GY3X5HVr13i866HAAsyou8G+eGubk=")
|
|
124
|
-
.setActive(true)
|
|
125
|
-
.setExpirationDate(new org.joda.time.DateTime('2021-12-31').toCalendar(Locale.getDefault()))
|
|
126
|
-
.create()
|
|
127
|
-
session.save();
|
|
128
|
-
})
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
**Delete a token via Groovy:**
|
|
132
|
-
|
|
133
|
-
```groovy
|
|
134
|
-
setResult("remove");
|
|
135
|
-
org.jahia.services.content.JCRTemplate.getInstance().doExecuteWithSystemSession({ session ->
|
|
136
|
-
org.jahia.osgi.BundleUtils.getOsgiService("org.jahia.modules.apitokens.TokenService")
|
|
137
|
-
.deleteToken("9201cd9b-4e62-415e-b523-e198dd7e4756", session)
|
|
138
|
-
session.save();
|
|
139
|
-
})
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
**Update a token via Groovy:**
|
|
143
|
-
|
|
144
|
-
```groovy
|
|
145
|
-
setResult("remove");
|
|
146
|
-
org.jahia.services.content.JCRTemplate.getInstance().doExecuteWithSystemSession({ session ->
|
|
147
|
-
def service = org.jahia.osgi.BundleUtils.getOsgiService("org.jahia.modules.apitokens.TokenService")
|
|
148
|
-
def tokenDetails = service.getTokenDetails("9201cd9b-4e62-415e-b523-e198dd7e4756", session)
|
|
149
|
-
tokenDetails.setActive(false)
|
|
150
|
-
service.updateToken(tokenDetails, session)
|
|
151
|
-
session.save();
|
|
152
|
-
})
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
`setResult("remove")` causes the Groovy script file to be deleted after execution.
|
|
156
|
-
|
|
157
|
-
---
|
|
158
|
-
|
|
159
|
-
## OAuth 2.0 — Social Login
|
|
160
|
-
|
|
161
|
-
### Available connectors
|
|
162
|
-
|
|
163
|
-
The Jahia OAuth module (compatible with Jahia 8.0.1+) bundles connectors for:
|
|
164
|
-
|
|
165
|
-
- Google
|
|
166
|
-
- Facebook
|
|
167
|
-
- LinkedIn
|
|
168
|
-
- GitHub
|
|
169
|
-
- FranceConnect
|
|
170
|
-
|
|
171
|
-
No code is required to use the built-in connectors; login buttons are added via drag-and-drop.
|
|
172
|
-
|
|
173
|
-
### Required modules
|
|
174
|
-
|
|
175
|
-
| Module | Purpose |
|
|
176
|
-
|--------|---------|
|
|
177
|
-
| Jahia Authentication | Backbone SSO framework |
|
|
178
|
-
| Jahia OAuth | OAuth connectors (Google, Facebook, etc.) |
|
|
179
|
-
| JCR Authentication Provider | Maps social profile attributes to Jahia user attributes |
|
|
180
|
-
| jExperience Auth data mapper | (Optional) Maps attributes to jExperience visitor profiles for personalization |
|
|
181
|
-
|
|
182
|
-
Install all required modules via **Jahia Administration > Modules and Extensions > Modules** before configuring.
|
|
183
|
-
|
|
184
|
-
### Configuring a social connector
|
|
185
|
-
|
|
186
|
-
1. Navigate to **Administration > Sites > Jahia Authentication**.
|
|
187
|
-
2. Expand the connector to configure (e.g., **Google Connector**).
|
|
188
|
-
3. Toggle **Activate**.
|
|
189
|
-
4. Fill in:
|
|
190
|
-
- **ID Client** — your OAuth application's client ID
|
|
191
|
-
- **Secret client** — your OAuth application's secret
|
|
192
|
-
- **Scope** — data to request from users (e.g., `profile email` for GitHub, `public_profile` for Facebook, `r_emailaddress r_liteprofile` for LinkedIn)
|
|
193
|
-
- **Callback URL** — where users are redirected after login. Must end with the connector-specific suffix, e.g., `.googleOAuthCallbackAction.do`. Example: `http://mysite.com/sites/digitall/home.googleOAuthCallbackAction.do`
|
|
194
|
-
5. Click **Save**.
|
|
195
|
-
|
|
196
|
-
After saving, the **Actions** button becomes available for user field mapping.
|
|
197
|
-
|
|
198
|
-
**Creating OAuth applications** (external provider consoles):
|
|
199
|
-
|
|
200
|
-
- Google: https://console.developers.google.com/apis/credentials/oauthclient
|
|
201
|
-
- Facebook: https://developers.facebook.com/apps/
|
|
202
|
-
- LinkedIn: https://www.linkedin.com/developers/
|
|
203
|
-
- GitHub: https://github.com/settings/developers
|
|
204
|
-
- FranceConnect: https://partenaires.franceconnect.gouv.fr/fcp/fournisseur-identite
|
|
205
|
-
|
|
206
|
-
### Mapping user fields
|
|
207
|
-
|
|
208
|
-
After configuring a connector, map the social login fields to Jahia user fields:
|
|
209
|
-
|
|
210
|
-
1. On the connector settings page, click **Actions**.
|
|
211
|
-
2. Expand the **JCR OAuth provider** section and toggle **Activate**.
|
|
212
|
-
3. In **Field from connector**, select social fields (e.g., First name, Last name, Google ID).
|
|
213
|
-
4. In **Field from provider**, select Jahia fields (e.g., First name, Last name, Login username mandatory).
|
|
214
|
-
5. Click **Save**.
|
|
215
|
-
|
|
216
|
-
### Adding social login buttons to pages
|
|
217
|
-
|
|
218
|
-
Add social login buttons like any Jahia component — find them under **Jahia OAuth button connector** in the **Select Content Type** dialog.
|
|
219
|
-
|
|
220
|
-
When Jahia OAuth is enabled, an **Authentication Results** page is created at `sites/_your-project_/oauth-result`. This page must be published.
|
|
221
|
-
|
|
222
|
-
### Building a custom OAuth connector
|
|
223
|
-
|
|
224
|
-
Requirements: OAuth 2.x protocol, knowledge of Jahia module development.
|
|
225
|
-
|
|
226
|
-
**Steps:**
|
|
227
|
-
|
|
228
|
-
1. Create a Jahia module.
|
|
229
|
-
|
|
230
|
-
2. Add dependencies to `pom.xml`:
|
|
231
|
-
|
|
232
|
-
```xml
|
|
233
|
-
<dependencies>
|
|
234
|
-
<dependency>
|
|
235
|
-
<groupId>org.jahia.modules</groupId>
|
|
236
|
-
<artifactId>jahia-oauth</artifactId>
|
|
237
|
-
<version>3.0.0</version>
|
|
238
|
-
<scope>provided</scope>
|
|
239
|
-
</dependency>
|
|
240
|
-
<dependency>
|
|
241
|
-
<groupId>org.jahia.modules</groupId>
|
|
242
|
-
<artifactId>jahia-authentication</artifactId>
|
|
243
|
-
<version>1.0.0</version>
|
|
244
|
-
<scope>provided</scope>
|
|
245
|
-
</dependency>
|
|
246
|
-
</dependencies>
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
3. Add node types to `definitions.cnd`:
|
|
250
|
-
|
|
251
|
-
```
|
|
252
|
-
[joant:myConnectorOAuthView] > jnt:content, jmix:authConnectorSettingView
|
|
253
|
-
[joant:myConnectorButton] > jnt:content, joamix:oauthButtonConnector
|
|
254
|
-
```
|
|
255
|
-
|
|
256
|
-
4. Register the OSGi service in your blueprint XML:
|
|
257
|
-
|
|
258
|
-
```xml
|
|
259
|
-
<osgi:reference id="jahiaOAuthService"
|
|
260
|
-
interface="org.jahia.modules.jahiaoauth.service.JahiaOAuthService"
|
|
261
|
-
availability="mandatory"/>
|
|
262
|
-
|
|
263
|
-
<osgi:service ref="MyConnectorImpl"
|
|
264
|
-
interface="org.jahia.modules.jahiaoauth.service.ConnectorService">
|
|
265
|
-
<osgi:service-properties>
|
|
266
|
-
<entry key="connectorServiceName" value="MyConnectorApi"/>
|
|
267
|
-
</osgi:service-properties>
|
|
268
|
-
</osgi:service>
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
The `connectorServiceName` must be consistent between the blueprint, the Spring file in Jahia OAuth module, and any JavaScript code in your module.
|
|
272
|
-
|
|
273
|
-
5. Create views for `joant:myConnectorOAuthView` (settings UI) and `joant:myConnectorButton` (login button).
|
|
274
|
-
|
|
275
|
-
**Action modules** execute logic after authentication (e.g., provision users). Two types:
|
|
276
|
-
|
|
277
|
-
- **Provider** — performs the login/connection
|
|
278
|
-
- **Data mapper** — stores user data (e.g., to jExperience profiles)
|
|
279
|
-
|
|
280
|
-
Implement `org.jahia.modules.jahiaauth.service.Mapper` for data mapper action modules.
|
|
281
|
-
|
|
282
|
-
---
|
|
283
|
-
|
|
284
|
-
## SAML 2.0
|
|
285
|
-
|
|
286
|
-
### Module installation
|
|
287
|
-
|
|
288
|
-
Deploy and install these three modules:
|
|
289
|
-
|
|
290
|
-
1. [SAML2 Authentication Valve](https://store.jahia.com/contents/modules-repository/org/jahia/modules/saml-authentication-valve.html)
|
|
291
|
-
2. [Jahia Authentication](https://store.jahia.com/contents/modules-repository/org/jahia/modules/jahia-authentication.html)
|
|
292
|
-
3. [JCR Authentication Provider](https://store.jahia.com/contents/modules-repository/org/jahia/modules/jcr-auth-provider.html)
|
|
293
|
-
|
|
294
|
-
### Creating a keystore
|
|
295
|
-
|
|
296
|
-
```bash
|
|
297
|
-
keytool -genkeypair \
|
|
298
|
-
-alias jahiakeystorealias \
|
|
299
|
-
-keypass changeit \
|
|
300
|
-
-keystore sp.jks \
|
|
301
|
-
-storepass changeit \
|
|
302
|
-
-keyalg RSA \
|
|
303
|
-
-keysize 2048 \
|
|
304
|
-
-validity 3650
|
|
305
|
-
```
|
|
306
|
-
|
|
307
|
-
When prompted "What is your first and last name?", enter your Jahia site domain name (must match `jahia.server.name`).
|
|
308
|
-
|
|
309
|
-
### Configuring SAML in Site Settings
|
|
310
|
-
|
|
311
|
-
1. Navigate to **Administration > Sites > Jahia Authentication** and expand **SAML2 Settings**.
|
|
312
|
-
2. Toggle **Activate**.
|
|
313
|
-
3. Upload the **Identity Provider Metadata** XML file (from your IdP, e.g., Shibboleth, Google).
|
|
314
|
-
4. Fill in:
|
|
315
|
-
- **Relying Party Identifier** — your SP identifier sent to the IdP
|
|
316
|
-
- **Server Location** — public URL of your Jahia site (e.g., `http://localhost:8080`)
|
|
317
|
-
- Keystore values (or leave keystore empty to auto-generate one using hostname as CN)
|
|
318
|
-
- **Incoming Target URL** — where IdP returns SAML response (default: `/home.callback.saml`)
|
|
319
|
-
- **Redirect after successful login** — Jahia relative URL (e.g., `/home.html`)
|
|
320
|
-
- **Maximum authentication lifetime** — max age of IdP session before re-authentication
|
|
321
|
-
5. Select optional flags: Force authentication, Passive authentication, Sign authentication request, Requires signed assertions.
|
|
322
|
-
6. Select **Binding type** (e.g., `HTTP-POST`).
|
|
323
|
-
7. Click **Save**.
|
|
324
|
-
|
|
325
|
-
After saving, **Open Service Provider Metadata** becomes available for downloading SP metadata to share with the IdP.
|
|
326
|
-
|
|
327
|
-
### Configuration file example
|
|
328
|
-
|
|
329
|
-
SAML config is stored per-site in `karaf/etc`:
|
|
330
|
-
|
|
331
|
-
```properties
|
|
332
|
-
# SAML Configuration file - autogenerated
|
|
333
|
-
siteKey = digitall
|
|
334
|
-
enabled = true
|
|
335
|
-
identityProviderMetadata = ...
|
|
336
|
-
relyingPartyIdentifier = test-local
|
|
337
|
-
serverLocation = http://localhost:8080
|
|
338
|
-
keyStore = ...
|
|
339
|
-
keyStoreAlias = saml2clientconfiguration
|
|
340
|
-
keyStorePass = changeit
|
|
341
|
-
privateKeyPass = changeit
|
|
342
|
-
incomingTargetUrl = /home.callback.saml
|
|
343
|
-
postLoginPath = /home.html
|
|
344
|
-
maximumAuthenticationLifetime = 86400
|
|
345
|
-
forceAuth = false
|
|
346
|
-
passive = false
|
|
347
|
-
requireSignedAssertions = false
|
|
348
|
-
signAuthnRequest = true
|
|
349
|
-
bindingType = urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST
|
|
350
|
-
keyStoreType = PKCS12
|
|
351
|
-
mapperName = jcrOAuthProvider
|
|
352
|
-
```
|
|
353
|
-
|
|
354
|
-
### Mapping users from IdP
|
|
355
|
-
|
|
356
|
-
1. On the **SAML2 Settings** page, click **Mappers**.
|
|
357
|
-
2. Expand and activate the **JCR Authentication Provider** section.
|
|
358
|
-
3. In **Field from connector**, select IdP fields (e.g., Login).
|
|
359
|
-
4. In **Field from provider**, select Jahia fields (e.g., Login username mandatory).
|
|
360
|
-
5. Click **Save**.
|
|
361
|
-
|
|
362
|
-
### Triggering SAML login
|
|
363
|
-
|
|
364
|
-
Users are redirected to the IdP by calling `*.connect.saml?siteKey={sitekey}`:
|
|
365
|
-
|
|
366
|
-
```
|
|
367
|
-
http://localhost/sites/mySite/home.connect.saml?siteKey=mySite
|
|
368
|
-
```
|
|
369
|
-
|
|
370
|
-
You can also use a form component (included with the module) or embed the redirect in a JSP/template.
|
|
371
|
-
|
|
372
|
-
**Redirect to a specific page after login** using the `redirect` query param:
|
|
373
|
-
|
|
374
|
-
```
|
|
375
|
-
/sites/mySite/home.connect.saml?siteKey=mySite&redirect=/sites/mySite/about-us.html
|
|
376
|
-
```
|
|
377
|
-
|
|
378
|
-
The `siteKey` param is required unless the server name is mapped to a site in Jahia (even then, using `siteKey` is recommended).
|
|
379
|
-
|
|
380
|
-
**JSP form example:**
|
|
381
|
-
|
|
382
|
-
```jsp
|
|
383
|
-
<c:if test="${not renderContext.loggedIn}">
|
|
384
|
-
<form action="${renderContext.mainResource.node.name}.connect.saml" method="GET">
|
|
385
|
-
<input type="hidden" name="siteKey" value="${renderContext.site.siteKey}"/>
|
|
386
|
-
<input type="hidden" name="redirect"
|
|
387
|
-
value="${renderContext.mainResource.nodePath}.${renderContext.mainResource.templateType}"/>
|
|
388
|
-
<input type="submit" value="${currentNode.displayableName}">
|
|
389
|
-
</form>
|
|
390
|
-
</c:if>
|
|
391
|
-
```
|
|
392
|
-
|
|
393
|
-
Redirect URLs are filtered: only local URLs (no hostname) are accepted to prevent XSS.
|
|
394
|
-
|
|
395
|
-
### Private pages and SAML authentication
|
|
396
|
-
|
|
397
|
-
By default Jahia returns HTTP 404 for private pages to hide their existence. To redirect unauthenticated users to the SAML IdP instead, configure `jahia.properties`:
|
|
398
|
-
|
|
399
|
-
```properties
|
|
400
|
-
# authorizationError returns 401 for guests, 403 for authenticated users without permission
|
|
401
|
-
protectedResourceAccessStrategy=authorizationError
|
|
402
|
-
```
|
|
403
|
-
|
|
404
|
-
Then customize the 401 error page to include a link to `*.connect.saml`. For sites where the site root itself is private:
|
|
405
|
-
|
|
406
|
-
```bash
|
|
407
|
-
cp error_401.jsp <tomcat_home>/webapps/ROOT/errors/sites/<mySite>/error_401.jsp
|
|
408
|
-
```
|
|
409
|
-
|
|
410
|
-
**Common SAML authentication error causes:**
|
|
411
|
-
|
|
412
|
-
- Missing or wrong `siteKey` query param
|
|
413
|
-
- Missing or unreadable SAML configuration file for the site
|
|
414
|
-
- Wrong keystore or certificate configuration
|
|
415
|
-
- Mismatched Relying Party Identifier
|
|
416
|
-
|
|
417
|
-
Clients always receive HTTP 400 on authentication failure — check server logs for the root cause.
|
|
418
|
-
|
|
419
|
-
---
|
|
420
|
-
|
|
421
|
-
## UPA — User Password Authentication Module
|
|
422
|
-
|
|
423
|
-
### What it adds over default auth
|
|
424
|
-
|
|
425
|
-
The UPA module provides a custom username/password login flow with optional multi-factor authentication (MFA via email code). It replaces the default Jahia login page with a configurable React-based UI. It is not a full IdP replacement — prefer SAML or OpenID for enterprise SSO.
|
|
426
|
-
|
|
427
|
-
**Important:** Once the API module is enabled, it overrides the default login URL for **all sites** on the platform. The legacy `/cms/login` endpoint remains active and must be blocked at the reverse proxy for full security.
|
|
428
|
-
|
|
429
|
-
### Prerequisites
|
|
430
|
-
|
|
431
|
-
- Jahia 8.2.3 or higher
|
|
432
|
-
- GraphQL DXM Provider module (included in Jahia core)
|
|
433
|
-
- For MFA email code: working SMTP server and users must have `j:email` set
|
|
434
|
-
- For clusters: sticky sessions or distributed sessions required
|
|
435
|
-
|
|
436
|
-
### Installation
|
|
437
|
-
|
|
438
|
-
Two modules from the [Jahia Store](https://store.jahia.com/):
|
|
439
|
-
|
|
440
|
-
1. **API module** (`user-password-authentication-api-X.Y.Z.jar`) — provides GraphQL APIs; install and enable platform-wide
|
|
441
|
-
2. **UI module** (`user-password-authentication-ui-X.Y.Z.tgz`) — React-based login form; install and enable per site
|
|
442
|
-
|
|
443
|
-
### Setup: login URL provider
|
|
444
|
-
|
|
445
|
-
Configure where users are redirected when accessing protected resources (choose one option):
|
|
446
|
-
|
|
447
|
-
**Option A (recommended):** Set `loginUrl` in OSGi console (`org.jahia.modules.upa` configuration):
|
|
448
|
-
- Navigate to **Tools > OSGi Console > OSGi > Configuration**
|
|
449
|
-
- Set `loginUrl` to the login page URL (e.g., `/sites/mySite/login.html`)
|
|
450
|
-
- The URL must include the site key for email template resolution
|
|
451
|
-
|
|
452
|
-
**Option B:** Install the community *Site Settings - Customize Error Pages* module.
|
|
453
|
-
|
|
454
|
-
**Option C:** Implement a custom `LoginUrlProvider` interface.
|
|
455
|
-
|
|
456
|
-
After configuring the URL provider, create the login page in Page Builder, add the **UPA Authentication** component (`upaui:authentication`), publish the page, and verify it is accessible without authentication.
|
|
457
|
-
|
|
458
|
-
### Authentication flow
|
|
459
|
-
|
|
460
|
-
1. User accesses protected content → redirected to login page
|
|
461
|
-
2. User enters username/email and password
|
|
462
|
-
3. If MFA is enabled: user receives a code by email and enters it in a verification form
|
|
463
|
-
4. On success: user is redirected to the originally requested resource
|
|
464
|
-
|
|
465
|
-
MFA follows a two-step model per factor:
|
|
466
|
-
- **Prepare** — generates and sends the challenge (e.g., email code)
|
|
467
|
-
- **Verify** — validates the user's response
|
|
468
|
-
|
|
469
|
-
### Customization
|
|
470
|
-
|
|
471
|
-
**Custom MFA email template:** Create a view with selector `mailCodeView` at higher priority for `upa:mfaMailCode` node type. Use `{{CODE}}` placeholder for the verification code. Use inline CSS (email client compatibility).
|
|
472
|
-
|
|
473
|
-
**Custom UI:** Only the API module is strictly required. Copy the [UI module source](https://github.com/Jahia/user-password-authentication/tree/main/ui/) and customize it. The GraphQL APIs are available at `/modules/graphql-dxm-provider/tools/graphql-workspace.jsp`.
|
|
474
|
-
|
|
475
|
-
**Custom MFA factor:** Implement the `MfaFactorProvider` interface (experimental, subject to change).
|
|
476
|
-
|
|
477
|
-
### Known limitations
|
|
478
|
-
|
|
479
|
-
| Limitation | Detail |
|
|
480
|
-
|-----------|--------|
|
|
481
|
-
| Global login URL | `loginUrl` applies platform-wide, across all sites |
|
|
482
|
-
| Cluster lockout | Max failed attempts per cluster node: `((T-1) × N) + 1` where T = tries configured, N = node count |
|
|
483
|
-
| Multiple providers | Only one custom `LoginUrlProvider` can be active at a time |
|
|
484
|
-
| Legacy endpoint | `/cms/login` bypasses UPA; must be blocked at the proxy level |
|