Vidya Setu Vidya Setu Review

Partner review

What We Fixed

Partner review — every bug fix and improvement in this round.

VidyaSetu ERP — Changes Log

Date: 24 August 2026
Scope: Stability, auth, attendance, student panel, demo credentials

This file lists every meaningful change made while reviewing and hardening the school ERP.


1. Critical bugs fixed

Issue What was wrong Fix
Student portal missing Routes pointed to StudentDashboardController, but the class and views did not exist. Student login always crashed. Built a full student panel (login, dashboard, monthly attendance, logout).
Super Admin was open /admin/dashboard and all admin pages had no login middleware. Anyone with the URL could open HQ. Added admin.auth middleware. Unauthenticated users now redirect to /admin/login.
Teacher attendance URL broken Route was registered as /admin/admin/attendance/teachers (double prefix). Sidebar highlighted the wrong path. Correct path is now /admin/attendance/teachers.
/school/login crashed Route called showLoginForm(), which did not exist. Added showLoginForm() alias to the school auth controller.
Duplicate auth controller Extra app/Http/Controllers/SchoolAuthController.php used the wrong namespace. Removed the dead file. Live controller is app/Http/Controllers/School/SchoolAuthController.php.
Unmarked = Present Student/teacher registers treated empty rows as Present. Saving the page marked everyone Present. Unmarked stays Unmarked. Present is saved only when explicitly selected.
Attendance save mismatches updateOrInsert with subject_id = null could create duplicate rows and skip school/class checks. Shared AttendanceRecorder helper now verifies student + class + school, then updates or inserts cleanly.
Global school-status middleware CheckSchoolStatus ran on every request and could flush Super Admin sessions. Replaced with role-specific middleware: admin.auth, school.auth, teacher.auth, student.auth.
School logout wiped HQ session()->flush() also logged Super Admin out after “Login as school”. School logout now clears only school keys. Impersonation returns to the admin dashboard.
Login tab ignored Unified login always opened the School tab, even with ?tab=teacher or ?tab=student. Alpine now respects the tab query string.
Future dates allowed Attendance date pickers allowed tomorrow. Date fields are capped at today; save also rejects future dates.

2. Attendance improvements


3. Auth & access control

New middleware:

Registered in bootstrap/app.php.

Protected now:

Inactive school, inactive teacher, or inactive student is blocked at login and on every request.


4. Student panel (new)

Created:

Login accepts Roll No, Student ID, or email. Password default for demo is 123456.


5. Other module hardening


6. Demo credentials reset

Hashed passwords in the database were unknown (no readable copy for most users). For the meeting demo they were reset to known values:

Role Password
Super Admin admin123
Every school admin School@123
Every teacher 123456
Every student 123456

School plain_password column was updated to School@123 so HQ “School Passwords & Logins” shows the live demo password.

Full URL + credential list: open http://127.0.0.1:8000/demo-guide (or /demo).

Changes log in the browser: http://127.0.0.1:8000/changes (or /changelog).

Partner hub: http://127.0.0.1:8000/review.


7. Files added / updated

Added

Updated

Removed