fix: employee self-service - open controller access and clock-in/out
- LeaveApplicationController: add employee branch to bypass can() check - AttendanceRecordController: add employee calendar view (own records only) + open clockIn/clockOut to employee type (no permission required) - PayslipController: add employee branch to show own payslips only - routes/web.php: remove permission:clock-in-out middleware from clock routes - employee-dashboard.tsx: always show clock in/out buttons for employees - Rebuild frontend assets
This commit is contained in:
@@ -16,6 +16,41 @@ class LeaveApplicationController extends Controller
|
||||
{
|
||||
public function index(Request $request)
|
||||
{
|
||||
$user = Auth::user();
|
||||
|
||||
// Employee self-service: always allow employees to see their own leaves
|
||||
if ($user->type === 'employee') {
|
||||
$query = LeaveApplication::with(['employee', 'leaveType', 'leavePolicy', 'approver', 'creator'])
|
||||
->where(function ($q) use ($user) {
|
||||
$q->where('employee_id', $user->id)
|
||||
->orWhere('created_by', $user->id);
|
||||
});
|
||||
|
||||
if ($request->has('search') && !empty($request->search)) {
|
||||
$query->where(function ($q) use ($request) {
|
||||
$q->where('reason', 'like', '%'.$request->search.'%')
|
||||
->orWhereHas('leaveType', fn($s) => $s->where('name', 'like', '%'.$request->search.'%'));
|
||||
});
|
||||
}
|
||||
if ($request->has('status') && !empty($request->status) && $request->status !== 'all') {
|
||||
$query->where('status', $request->status);
|
||||
}
|
||||
$query->orderBy('id', 'desc');
|
||||
|
||||
$leaveApplications = $query->paginate($request->per_page ?? 10);
|
||||
|
||||
$leaveTypes = LeaveType::whereIn('created_by', getCompanyAndUsersId())
|
||||
->where('status', 'active')
|
||||
->get(['id', 'name', 'color']);
|
||||
|
||||
return Inertia::render('hr/leave-applications/index', [
|
||||
'leaveApplications' => $leaveApplications,
|
||||
'employees' => [],
|
||||
'leaveTypes' => $leaveTypes,
|
||||
'filters' => $request->all(['search', 'status', 'sort_field', 'sort_direction', 'per_page']),
|
||||
]);
|
||||
}
|
||||
|
||||
if (Auth::user()->can('manage-leave-applications')) {
|
||||
$query = LeaveApplication::with(['employee', 'leaveType', 'leavePolicy', 'approver', 'creator'])
|
||||
->where(function ($q) {
|
||||
|
||||
Reference in New Issue
Block a user