Let me tell you the points.
- I am using Entrust by https://github.com/Zizaco/entrust/
- I am using multi-auth i.e I have 2 guards as
web
forusers
table andadmin
guard foradmins
table. - In
admins
table there are users with multiple permissions (roles too). The
permission
middelware has the codeif (!Auth::guard('
admin
')->user()->can(explode('|', $permissions)))In my
Admin
model, I have useduse EntrustUserTrait;
Middelware
permission
is working fine onroutes.php
the only problem I am facing is if anyAdmin User
does not have permission supposecan-create
then the html written in the that block should be hidden in blade file.
@permission('can-create')
Lorem Ipsum...
@endpermission
the above blade directives are not highlighted as @if or @foreach etc.
I think there might be something due multi-auth I am using, since Entrust takes users
table by default.
Kindly enlighten me, considering this situation.
Yes I got the solution to this issue. Please go through the steps I have used.
php artisan make:provider EntrustCustomServiceProvider
app/Providers/EntrustCustomServiceProvider.php
Use Auth;
and Write in theboot
functionpublic function boot() {
}
Add this entry in providers array in
config/app.php
:App\Providers\EntrustCustomServiceProvider::class,
One more thing, many of the phpstorm users may wonder why these directives are not auto-populated in the editor then please note, whenever we add custom blade directives, we need to add these in the blade plugin of the phpstorm editor. Here is the solution:
File->settings->php->Blade
Default Settings
, go toDirectives
tab.+
permission
without using @, checkhas parameter
<?php if (Auth::guard('admin')->user()->can(
in prefix and)):?>
in suffix@endpermission
without adding any parameters.I hope this is helpful for someone like me :)