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:
2026-06-30 13:51:02 +08:00
parent c11ee26183
commit 75ee8cacb8
417 changed files with 14497 additions and 14275 deletions

View File

@@ -14,6 +14,36 @@ class PayslipController extends Controller
{
public function index(Request $request)
{
$user = Auth::user();
// Employee self-service: show only their own payslips
if ($user->type === 'employee') {
$query = Payslip::with(['employee', 'payrollEntry.payrollRun', 'creator'])
->where('employee_id', $user->id);
if ($request->has('search') && !empty($request->search)) {
$query->where('payslip_number', 'like', '%'.$request->search.'%');
}
if ($request->has('status') && !empty($request->status) && $request->status !== 'all') {
$query->where('status', $request->status);
}
if ($request->has('date_from') && !empty($request->date_from)) {
$query->where('pay_period_start', '>=', $request->date_from);
}
if ($request->has('date_to') && !empty($request->date_to)) {
$query->where('pay_period_end', '<=', $request->date_to);
}
$query->orderBy('pay_date', 'desc');
$payslips = $query->paginate($request->per_page ?? 10);
return Inertia::render('hr/payslips/index', [
'payslips' => $payslips,
'employees' => [],
'filters' => $request->all(['search', 'status', 'date_from', 'date_to', 'sort_field', 'sort_direction', 'per_page']),
]);
}
if (Auth::user()->can('manage-payslips')) {
$query = Payslip::with(['employee', 'payrollEntry.payrollRun', 'creator'])->where(function ($q) {
if (Auth::user()->can('manage-any-payslips')) {