Ermöglicht Laravel das Hinzufügen mehrerer Richtlinien für ein Modell? I.e. App\Providers\ASuthServiceProvider
‚s $policies
Eigenschaft betrachten:Mehrere Richtlinien für ein Modell - Laravel
protected $policies = [
'App\Team' => 'App\Policies\TeamPolicy',
'App\Team' => 'App\Policies\RoundPolicy',
'App\Team' => 'App\Policies\AnotherPolicy',
];
Ich habe es nicht in einer Anwendung getestet, denn selbst wenn es funktioniert, würde ich hier eine ähnliche Frage zu stellen, darüber, ob dies als schlechte Praxis oder anfällig für unerwartete Verhalten.
Die Alternative ich eine sehr chaotische Politik ist haben, Richtlinien enthält, mehrere Controller beziehen, in Kamel Fall genannt:
/**
* Allows coach of Team and admin to see the Team management view.
* Used in TeamManagementController
*
* @param App\User $user
* @param App\Team $team
* @return boolean
*/
public function manage(User $user, Team $team)
{
return $user->id === $team->user_id || $user->isAdmin();
}
/**
* Allows a coach to detach themself from a Team.
* Used in TeamController
*
* @param App\User $user
* @param App\Team $team
* @return boolean
*/
public function detach(User $user, Team $team)
{
return $user->id === $team->user_id;
}
/**
* Below function are used for controllers other than TeamController and TeamManagementController.
* Reason: We need to authorize, based on a Team. Hence, using this Policy.
*/
/**
* Allows coach of Team, as well as admin to view players of a Team.
* Used in PlayerController
*
* @param App\User $user
* @param App\Team $team
* @return boolean
*/
public function indexPlayers(User $user, Team $team)
{
return $user->id === $team->user_id || $user->isAdmin();
}
/**
* Allows coach of Team, as well as admin to view players of a Team as an array.
* Used in PlayerController
*
* @param App\User $user
* @param App\Team $team
* @return boolean
*/
public function fetchPlayers(User $user, Team $team)
{
return $user->id === $team->user_id || $user->isAdmin();
}
etc. etc.
Beratung wird gebeten :)
Vielleicht können Sie einfach eine Richtlinienklasse erweitern, um weitere Funktionen hinzuzufügen –