vernova/app/Policies/EmployeePolicy.php
2026-07-26 19:58:27 +03:30

77 lines
2.2 KiB
PHP

<?php
namespace App\Policies;
use App\Models\User;
use App\Models\Employee;
class EmployeePolicy
{
/**
* Determine whether the user can view any employees.
*/
public function viewAny(User $user): bool
{
return $user->tenant_id === session('tenant_id')
&& ($user->hasRole('admin')
|| $user->hasRole('manager')
|| $user->hasRole('hr')
|| $user->hasPermissionTo('view employees'));
}
/**
* Determine whether the user can view the employee.
*/
public function view(User $user, Employee $employee): bool
{
return $user->tenant_id === $employee->tenant_id
&& ($user->hasRole('admin')
|| $user->hasRole('manager')
|| $user->hasRole('hr')
|| $user->hasPermissionTo('view employees'));
}
/**
* Determine whether the user can create employees.
*/
public function create(User $user): bool
{
return $user->tenant_id === session('tenant_id')
&& ($user->hasRole('admin')
|| $user->hasRole('hr')
|| $user->hasPermissionTo('create employees'));
}
/**
* Determine whether the user can update the employee.
*/
public function update(User $user, Employee $employee): bool
{
return $user->tenant_id === $employee->tenant_id
&& ($user->hasRole('admin')
|| $user->hasRole('hr')
|| $user->hasPermissionTo('edit employees'));
}
/**
* Determine whether the user can delete the employee.
*/
public function delete(User $user, Employee $employee): bool
{
return $user->tenant_id === $employee->tenant_id
&& ($user->hasRole('admin')
|| $user->hasPermissionTo('delete employees'));
}
/**
* Determine whether the user can view employee financials.
*/
public function viewFinancials(User $user, Employee $employee): bool
{
return $user->tenant_id === $employee->tenant_id
&& ($user->hasRole('admin')
|| $user->hasRole('hr')
|| $user->hasPermissionTo('view employee financials'));
}
}