Laravel 5.4 Gates и политики: могут ли политики перезаписывать Gates?

UserPolicy, кажется, перезаписывает ворота, которые я сделал.
Пояснение:
в AuthServiceProvider ниже, когда я закомментирую строку

User::class => UserPolicy::class

В $ защищенных политиках My Gates работает нормально.

Что может сделать ворота переписанными? (файлы ниже)

AuthServiceProvider:

<?php

namespace App\Providers;

use App\Project;
use App\Comment;
use App\ProjectImage;
use App\User;
use App\Policies\ProjectPolicy;
use App\Policies\CommentPolicy;
use App\Policies\ProjectImagePolicy;
use App\Policies\UserPolicy;

use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as       ServiceProvider;

class AuthServiceProvider extends ServiceProvider
{

protected $policies = [
Project::class => ProjectPolicy::class,
Comment::class => CommentPolicy::class,
ProjectImage::class => ProjectImagePolicy::class,
User::class => UserPolicy::class
];public function boot()
{
$this->registerPolicies();

Gate::define('follow', function(User $me, User $target){
return $me->id !== $target->id
&& !$me->subscriptions->contains($target->id);
});
Gate::define('unfollow', function(User $me, User $target){
return $me->subscriptions->contains($target->id);
});
}
}

UserPolicy

<?php

namespace App\Policies;

use App\User;
use Illuminate\Auth\Access\HandlesAuthorization;
use Illuminate\Support\Facades\Auth;

class UserPolicy
{
use HandlesAuthorization;

public function before($user)
{
return $user->isAdmin();
}public function viewUnpublished(User $me, User $target)
{
return $me->id === $target->id;
}public function update(User $me, User $target)
{
return $me->id === $target->id;
}
}

UserController, где я вызываю ворота:

public function show(User $user)
{
$refDate = new Carbon;
$refDate->subMonth();
$publishedProjects = $user->projects->where('published', true);
if(Route::is('unpublished')){
$this->authorize('viewUnpublished', $user);
}

$canFollow = Gate::allows('follow', $user) ? true : false;
$canUnfollow = Gate::allows('unfollow', $user) ? true : false;

$unpublishedProjects = $user->projects->where('published', false);
return view('user.profile', compact('user', 'publishedProjects', 'refDate', 'unpublishedProjects', 'canFollow', 'canUnfollow'));
}

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]