umbraco-granular-user-permissions について
Umbraco でエンティティ単位のユーザー権限を実装するスキルです。特定のコンテンツ、メディア、メンバーを対象とする権限マニフェストと要素の作成を案内します。
主な機能
- 01エンティティ単位の権限制御
- 02詳細な権限マニフェスト
- 03カスタム権限要素
- 04ドキュメント、メディア、メンバーに対応
- 05ドキュメントとサンプルの参照
活用シーン
- 01個々のコンテンツノードに異なる権限を設定
- 02特定のメディア項目向けの権限作成
- 03カスタムのメンバー単位の権限制御を定義
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ umbraco/ umbraco-cms-backoffice-skills --skill umbraco-granular-user-permissionsインストール後、Claude Code で/umbraco-granular-user-permissionsを入力して読み込まれたか確認します。
詳細
Umbraco の詳細なユーザー権限
これは何ですか?
詳細なユーザー権限を使用すると、Umbraco の特定のエンティティタイプに対してカスタムの権限コントロールを作成できます。すべてのインスタンスに適用される一般的なエンティティ権限とは異なり、詳細な権限はエンティティごとに構成でき、きめ細かなアクセス制御が可能になります。これは一般的に、ドキュメント権限に使用され、ユーザーごとに異なるコンテンツノードに対して異なる権限を持たせることができます。
ドキュメント
実装する前に、必ず最新のドキュメントを取得してください。
- Foundation: https://docs.umbraco.com/umbraco-cms/extend-your-project/backoffice-extensions/foundation
- Extension Registry: https://docs.umbraco.com/umbraco-cms/extend-your-project/backoffice-extensions/extending-overview/extension-registry
- User Permissions: https://docs.umbraco.com/umbraco-cms/extend-your-project/backoffice-extensions/extending-overview/extension-types
リファレンス例
Umbraco のソースには、動作する例が含まれています。
場所: /Umbraco-CMS/src/Umbraco.Web.UI.Client/examples/user-permission/
この例は、詳細なユーザー権限の実装を示しています。本番環境のパターンとしてこれを研究してください。
関連する Foundation スキル
-
Conditions: 権限の可視性を制御する場合
- 参照スキル:
umbraco-conditions
- 参照スキル:
-
Context API: ユーザーまたはワークスペースのコンテキストにアクセスする場合
- 参照スキル:
umbraco-context-api
- 参照スキル:
ワークフロー
- ドキュメントを取得 - 上記の URL で WebFetch を使用します
- 質問する - どのエンティティタイプですか?どの権限ですか?どのスキーマタイプですか?
- ファイルを生成 - 最新のドキュメントに基づいてマニフェスト + 要素を作成します
- 説明 - 作成された内容とテスト方法を示します
最小限の例
マニフェスト (manifests.ts)
import type { ManifestGranularUserPermission } from '@umbraco-cms/backoffice/user-permission';
export const manifests: Array<ManifestGranularUserPermission> = [
{
type: 'userGranularPermission',
alias: 'My.GranularPermission.Custom',
name: 'Custom Granular Permission',
weight: 100,
forEntityTypes: ['my-entity-type'],
element: () => import('./my-granular-permission.element.js'),
meta: {
schemaType: 'MyPermissionPresentationModel',
label: 'Custom Permissions',
description: 'Configure custom permissions for this entity',
},
},
];
要素の実装 (my-granular-permission.element.ts)
import { html, customElement, property, state } from '@umbraco-cms/backoffice/external/lit';
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
@customElement('my-granular-permission')
export class MyGranularPermissionElement extends UmbLitElement {
@property({ attribute: false })
value: unknown;
@state()
private _permissions: string[] = [];
override render() {
return html`
<uui-box headline="Custom Permissions">
<uui-checkbox
label="Can Edit"
@change=${(e: Event) => this.#onPermissionChange('edit', (e.target as HTMLInputElement).checked)}
></uui-checkbox>
<uui-checkbox
label="Can Delete"
@change=${(e: Event) => this.#onPermissionChange('delete', (e.target as HTMLInputElement).checked)}
></uui-checkbox>
</uui-box>
`;
}
#onPermissionChange(permission: string, enabled: boolean) {
if (enabled) {
this._permissions = [...this._permissions, permission];
} else {
this._permissions = this._permissions.filter(p => p !== permission);
}
this.dispatchEvent(new CustomEvent('change', { detail: { permissions: this._permissions } }));
}
}
export default MyGranularPermissionElement;
インターフェースリファレンス
interface ManifestGranularUserPermission extends ManifestElement {
type: 'userGranularPermission';
forEntityTypes?: Array<string>;
meta: MetaGranularUserPermission;
}
interface MetaGranularUserPermission {
schemaType: string; // API schema type for serialization
label?: string; // Display label (can use localization key)
labelKey?: string; // Localization key for label
description?: string; // Description text
descriptionKey?: string; // Localization key for description
}
一般的なエンティティタイプ
document- コンテンツノードmedia- メディアアイテムmember- メンバー
以上です!常に最新のドキュメントを取得し、例を最小限に保ち、完全に動作するコードを生成してください。
コメント
Markdown 対応