File: /home/jubaroyal/public_html/app/Models/User.php
<?php
namespace App\Models;
// use Illuminate\Contracts\Auth\MustVerifyEmail;
use Laravel\Sanctum\HasApiTokens;
use Illuminate\Support\Facades\DB;
use Spatie\Permission\Traits\HasRoles;
use Illuminate\Notifications\Notifiable;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable, HasRoles;
/**
* The attributes that are mass assignable.
*
* @var array<int, string>
*/
protected $fillable = [
'name',
'email',
'phone',
'photo',
'password',
'confirm_password',
'status',
'user_type',
];
/**
* The attributes that should be hidden for serialization.
*
* @var array<int, string>
*/
protected $hidden = [
'password',
'remember_token',
];
/**
* The attributes that should be cast.
*
* @var array<string, string>
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
public static function getPermissionGroupNames(){
$permissionGroupNames = DB::table('permissions')->select('group_name')->groupBy('group_name')->get();
return $permissionGroupNames;
} // end method
public static function getPermissionNamesByGroupName($group_name){
$permissionNames = DB::table('permissions')->select('name', 'id')->where('group_name', '=', $group_name)->get();
return $permissionNames;
} // end method
public static function roleHasPermissions($role, $allPermissionNames){
$hasPermission = true;
foreach($allPermissionNames as $permission){
if (!$role->hasPermissionTo($permission->name)) {
$hasPermission = false;
}
return $hasPermission;
}
} // end method
}