76 lines
1.7 KiB
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);
|
|
}
|
|
}
|
|
}
|