mcpField
U
umbraco-granular-user-permissions

umbraco-granular-user-permissions

github.com/umbracoセキュリティ27389 回インストール6 週間前に更新
リポジトリ

umbraco-granular-user-permissions について

Umbraco でエンティティ単位のユーザー権限を実装するスキルです。特定のコンテンツ、メディア、メンバーを対象とする権限マニフェストと要素の作成を案内します。

主な機能

  1. 01エンティティ単位の権限制御
  2. 02詳細な権限マニフェスト
  3. 03カスタム権限要素
  4. 04ドキュメント、メディア、メンバーに対応
  5. 05ドキュメントとサンプルの参照

活用シーン

  1. 01個々のコンテンツノードに異なる権限を設定
  2. 02特定のメディア項目向けの権限作成
  3. 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 の特定のエンティティタイプに対してカスタムの権限コントロールを作成できます。すべてのインスタンスに適用される一般的なエンティティ権限とは異なり、詳細な権限はエンティティごとに構成でき、きめ細かなアクセス制御が可能になります。これは一般的に、ドキュメント権限に使用され、ユーザーごとに異なるコンテンツノードに対して異なる権限を持たせることができます。

ドキュメント

実装する前に、必ず最新のドキュメントを取得してください。

リファレンス例

Umbraco のソースには、動作する例が含まれています。

場所: /Umbraco-CMS/src/Umbraco.Web.UI.Client/examples/user-permission/

この例は、詳細なユーザー権限の実装を示しています。本番環境のパターンとしてこれを研究してください。

関連する Foundation スキル

  • Conditions: 権限の可視性を制御する場合

    • 参照スキル: umbraco-conditions
  • Context API: ユーザーまたはワークスペースのコンテキストにアクセスする場合

    • 参照スキル: umbraco-context-api

ワークフロー

  1. ドキュメントを取得 - 上記の URL で WebFetch を使用します
  2. 質問する - どのエンティティタイプですか?どの権限ですか?どのスキーマタイプですか?
  3. ファイルを生成 - 最新のドキュメントに基づいてマニフェスト + 要素を作成します
  4. 説明 - 作成された内容とテスト方法を示します

最小限の例

マニフェスト (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 - メンバー

以上です!常に最新のドキュメントを取得し、例を最小限に保ち、完全に動作するコードを生成してください。

コメント