タスクによる権限

concrete5.4でタスクによる権限が実装されました。これらの権限は通常のコンテンツ(コンテンツの特定のインスタンスやタイプ)による権限とは対照的に、特定のタスクに対する権限を設定できます。これらのタスク権限は管理画面からアクセスできます。開発者は独自のタスク権限をインストールすることができ、またパッケージを通してインストールすることもできます。

タスクによる権限の例

  • 誰がページのデフォルトを編集できるか
  • 誰がユーザーとしてログインが使えるか
  • 誰がパッケージのアンインストールを行なえるか

ログインしているユーザーによってタスク権限を確認する

	$tp = TaskPermission::getByHandle('page_defaults');
	if ($tp->can()) {
		print 'yes';
	}

マジックメソッドの使用

"canAccess"のあとにタスク権限のハンドルをキャメルケースに変換したものを追加したメソッドを使用できます。

	$tp = new TaskPermission();
	if ($tp->canAcessPageDefaults()) {
		print 'yes';
	}

他のユーザー、またはグループによってタスク権限を確認する

シンプルに can() メソッドにGroupまたはUserInfoオブジェクトを渡してください。

	$ui = UserInfo::getByUserName('johndoe');
	$tp = TaskPermission::getByHandle('page_defaults');
	if ($tp->can($ui)) {
		print 'johndoe can access';
	}

メソッド

$tp = TaskPermission::getByID($tpID)

$tpIDによって取得したTaskPermissionオブジェクトを返します。

$tp = TaskPermission::getByHandle($tpHandle)

ハンドルによって取得したTaskPermissionオブジェクトを返します。

$tp->getTaskPermissionID()

タスク権限オブジェクトのIDを取得します。

$tp->getTaskPermissionName()

タスク権限オブジェクトの名前を取得します。

$tp->getTaskPermissionHandle()

タスク権限オブジェクトのハンドルを取得します。

$tp->getTaskPermissionDescription()

タスク権限オブジェクトの説明を取得します。

$tp->getPackageID()

タスク権限オブジェクトのパッケージIDを返します。

$tp->getPackageHandle()

タスク権限オブジェクトのパッケージハンドルを返します。

$tp->delete()

タスク権限を削除します。

$tp->clearPermissions()

タスクに関連する全ての権限設定を削除します。

$tp->addAccess($obj)

UserInfoまたはGroupオブジェクトを渡します。渡されたオブジェクトに対するアクセス権を追加します。

$tp->removeAccess($obj)

UserInfoまたはGroupオブジェクトを渡します。渡されたオブジェクトに対するアクセス権を剥奪します。

$tp->can($obj = false)

タスクにアクセス可能かどうかをチェックします。$obj に false が渡された場合は、現在ログイン中のユーザーがチェックされます。


原文:Task-Based Permissions