Skip to content

Splaturn/permissions

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

splaturn/permissions

Splaturn内部で使用されている許可管理ライブラリです。 クラスベースでの許可実装を助けるためのものです。

usage

まず、許可の一覧をsplaturn\permissions\PermissionsLayerを実装したクラスにより定義します。 クラスはプロパティの型がすべてboolである必要があります。 また、デフォルト値を持ってもなりません。

これらの仕様を満たしているかを確認するのにsplaturn\permissions\PermissionsValidatorが使用できます。
テストなどで用いると良いでしょう。

  • Good

    use splaturn\permissions\PermissionsLayer;
    
    class YourPermissionsLayer implements PermissionsLayer{
        public bool $takeItem;
        public bool $dropItem;
    }
  • Bad

    use splaturn\permissions\PermissionsLayer;
    
    class YourPermissionsLayer implements PermissionsLayer{
        public ?bool $takeItem; // must not be nullable
        public string $dropItem; // must not be types other than bool
        public bool $useItem = false; // must not have default value 
    }

許可の計算をするにはsplaturn\permissions\PermissionsCalculator::calculate()を使用します。

最初のパラメータはベースとなる許可レイヤー(PermissionsLayers)です。 このレイヤーはすべてのプロパティが定義されている必要があります。

二つ目のパラメータはベースの上に重ねられるレイヤーの配列です。 定義されている中で一番先頭の値が結果に入れられます。

上で定義したYourPermissionsLayerを例にします。

use splaturn\permissions\PermissionsCalculator;
/** 
 * @var YourPermissionsLayer[] $layers
 * @var YourPermissionsLayer $base
 **/
$result = PermissionsCalculator::calculate($base, $layers);
layer takeItem dropItem
1
2
3
base

このような場合、$result->takeItemfalse$result->takeItemtrueとなります。

上から覗いて見たときに一見えているものが採用されるということです。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages