FarisaRahmaSari_E31222327/app/Models/User.php

76 lines
1.7 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Tymon\JWTAuth\Contracts\JWTSubject;
use App\Models\Schedule;
use App\Models\Role;
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable implements JWTSubject
{
use HasApiTokens, Notifiable;
protected $fillable = [
'name', 'email', 'password', 'pin_code', 'role'
];
protected $hidden = [
'pin_code', 'password', 'remember_token',
];
protected $casts = [
'email_verified_at' => 'datetime',
];
public function hasRole($role)
{
return $this->role === $role;
}
public function hasAnyRole($roles)
{
if (is_array($roles)) {
return in_array($this->role, $roles);
}
return $this->role === $roles;
}
public function getRouteKeyName()
{
return 'name';
}
public function roles()
{
return $this->belongsToMany('App\Models\Role', 'role_users', 'user_id', 'role_id');
}
public function schedules()
{
return $this->belongsToMany(Schedule::class, 'schedule_employees', 'emp_id', 'schedule_id');
}
// JWT Methods
public function getJWTIdentifier()
{
return $this->getKey();
}
public function getJWTCustomClaims()
{
return [];
}
public function deleteUser(User $user)
{
try {
$user->delete();
return response()->json(['message' => 'User deleted successfully']);
} catch (\Exception $e) {
return response()->json(['message' => 'Failed to delete user'], 500);
}
}
}