1

私の調査から、権限パッケージ ( https://github.com/machuga/authority-l4 ) は、柔軟性を維持しながらロール/パーミッション ベースのユーザー認証システムを実装するのに最適であることがわかりました。このパッケージの使い方を正確に理解できません。ドキュメントはその機能と構成をカバーしていますが、いくつかのことを説明していません。誰かが私を正しい方向に向けることができることを望んでいました。

設定ファイルの目的は何ですか? 権限を指定するには?これらはデータベースに保存されていませんか?

エイリアスを使用して権限をグループ化できるようです。エイリアスを使用したくない場合はどうすればよいですか。パーミッションだけを作成する方法はありますか?

ユーザーが割り当てられた投稿の編集のみを許可するなど、リソースのルールを作成できるようです。ドキュメントには、これに関する多くの情報がないようです。

どんな助けでも大歓迎です。インターネットで検索しましたが、このパッケージはあまり見つかりませんでした。

4

3 に答える 3

2

プロジェクトのために探していますが、私は Authority を使用していません。私のドキュメントの読みに基づいて、これが機能する方法です:

このconfigファイルは、パッケージの構成を指定するためにあります。役割と権限はデータベースに保存できます (ただし、そうである必要はありません)。

構成ファイルは、パッケージにどのように動作するかを伝えるためにあります。したがって、たとえば、構成ファイルを使用すると、1 つまたは複数のアクセス許可のエイリアスを設定できます。エイリアスを使用する場合は、パッケージが期待どおりに機能するように、これを事前に行う必要があります。別の例として、ルール (詳細は後述) を config.xml で設定できます (設定する必要があります)

次の構成を検討してください (Authority docs から):

return array(

    'initialize' => function($authority) {
        $user = $authority->getCurrentUser();

        //action aliases
        $authority->addAlias('manage', array('create', 'read', 'update', 'delete'));
        $authority->addAlias('moderate', array('read', 'update', 'delete'));

        //an example using the `hasRole` function, see below examples for more details
        if($user->hasRole('admin')){
            $authority->allow('manage', 'all');
        }
    }

);

これは何をしているのですか?順を追って説明しましょう。

まず、これは、アプリケーションの初期化時に発生するはずの何かを指定しています。おそらく他にもイベントが発生する可能性がありますが、アプリの初期化後にルールを変更する理由がわかりません。アプリが初期化されると、クロージャーが呼び出されます。

クロージャーはこれを行います:

  1. 現在のユーザーを取得します - 以降のルールはログインしているユーザーによって異なります

  2. createいくつかのエイリアスを設定します - 私たちは怠け者で、read、 などのルールを 1 つずつ指定したくないからです。代わりに使用できますmanage

  3. 次に、現在のユーザーをチェックします。管理者の場合、リソースmanageに対するアクセス許可を取得しallます。

アクセス制御情報がデータベースに保存されている場合は、ここにロードして、そのデータを使用してルールを設定できます。

ここで、後でアプリを実行する際に、たとえばユーザーがユーザー レコードを作成できるかどうかを確認する必要があります。コントローラーでこれを行います:

if( Authority::can('create', 'User') ) {
    User::create(array(
        'username' => 'someuser@test.com'
    )); 
} else {
    // what happens if the user's trying to do something they're not
    // allowed to do?
    throw new Exception("No way man!");
}

これにより、構成で設定したルールがチェックされ、ユーザーがこれを行うことが許可されているかどうかが判断されます。そうでない場合は、(私の例では) 例外をスローします。あなたはおそらくそれをもっと優雅に扱いたいと思うでしょう。

権限により、権限をより正確に定義する柔軟性が得られます。例えば、

Authority::allow('manage', 'User', function($self, $user){
    return $self->getCurrentUser()->id === $user->id;
});

このルールには、ユーザーが自分のユーザー レコードを管理できるようにするチェックが含まれていますが、他のユーザーのレコードは管理できません。これを行うには、上記の例を調整する必要があります。

if( Authority::can('update', 'User', $user) ) {
    $user->username = 'someuser@test.com';
    $user->save();
} else {
    // what happens if the user's trying to do something they're not
    // allowed to do?
    throw new Exception("What do you think you're doing?!");
}

この場合、Authority インスタンスがクロージャーに渡され$self、現在のユーザー ID が取得され、編集中のユーザーと照合されます ( $user)。ユーザーが自分以外の誰かを編集しようとすると、チェックは失敗します。

これは非常に基本的な概要です。お役に立てば幸いです。

于 2014-07-23T20:23:39.283 に答える
0

したがって、Authority l4 は単なる Facade アドオンのようです。実際のパッケージ自体は次の場所にあります: https://github.com/machuga/authority

こちらのドキュメントはより完全です。これは、l4 パッケージで指定する必要があります。

于 2014-07-23T20:07:50.973 に答える