|
Server : Apache/2.4.41 (Ubuntu) System : Linux vmi1525618.contaboserver.net 5.4.0-105-generic #119-Ubuntu SMP Mon Mar 7 18:49:24 UTC 2022 x86_64 User : www-data ( 33) PHP Version : 8.2.12 Disable Function : NONE Directory : /var/www/leadai/webmaster.leadai.co.in/app/Traits/ |
Upload File : |
<?php
namespace App\Traits;
use App\Models\Role;
use App\Models\Permission;
trait HasPermissionsTrait
{
// Get Permissions
public function getAllPermissions($permissions)
{
return Permission::whereIn('slug', $permissions)->get();
}
// Check has permissions
public function hasPermission($permission)
{
return (bool) $this->permissions->where('slug', $permission->slug)->count();
}
// Has Role
public function hasRole(...$roles)
{
foreach ($roles as $role) {
if ($this->roles->contains('slug', $role)) {
return true;
}
}
return false;
}
public function hasPermissionTo($permission)
{
return $this->hasPermissionThroughRole($permission) || $this->hasPermission($permission);
}
// give permissions
public function givePermissionTo(...$permissions)
{
$permissions = $this->getAllPermissions($permissions);
if ($permissions == null) {
return $this;
}
$this->permissions()->saveMany($permissions);
return $this;
}
// Has permission throught role
public function hasPermissionThroughRole($permissions)
{
foreach ($permissions->roles as $role) {
if ($this->roles->contains($role)) {
return true;
}
}
return false;
}
public function permissions()
{
return $this->belongsTomany(Permission::class, 'users_permissions');
}
public function roles()
{
return $this->belongsTomany(Role::class, 'users_roles');
}
}