Every user account starts in an unvalidated state (Documentation Index
Fetch the complete documentation index at: https://mintlify.com/AngelZurita28/VeranoRegional/llms.txt
Use this file to discover all available pages before exploring further.
isValid = 0). Until an admin or coordinator validates the account, the user cannot interact with program features such as submitting applications or creating projects. This page covers the full lifecycle of user accounts across all roles.
Users who self-register through the public registration flow are always created with
isValid = 0. Users added directly from the dashboard by a coordinator are created with isValid = 1 and do not need a separate validation step.Role-based access
Three administrative roles can manage users, each with a different scope:| Role | ID | Scope |
|---|---|---|
| Admin | 1 | Full access to all users across all institutions and campuses |
| Institutional coordinator | 2 | Scoped to users whose campus belongs to their institution |
| Campus coordinator | 3 | Scoped to users whose campus matches their own campus |
BaseController::requireRole. Attempts to access or modify users outside the allowed scope are rejected.
User validation
When a user registers on the platform, theirisValid column is set to 0. You must set it to 1 to activate the account.
Open the user list
Navigate to the appropriate list: Manage Students (
?action=manage_students), Manage Researchers (?action=manage_researchers), or Manage Coordinators (?action=manage_coordinators).Toggle validation
Click the validate or deactivate button next to a user. The platform calls
?action=toggle_validation&userId=&newState=&origin= which routes to UserController::toggleUserValidation. The origin parameter must be one of manage_students, manage_researchers, or manage_coordinators — otherwise the platform redirects to the dashboard.user.isValid to 1 (active) or 0 (inactive) and records the validating user’s ID in idUserValidate along with a validateDate timestamp.
Student management
List students
Navigate to
?action=manage_students. Filter by institution, campus, and career. Coordinators see only students in their scope.Student details
Navigate to
?action=view_student_details&studentId= to see full profile data and uploaded documents.Add a student
Navigate to
?action=show_add_student_form and submit to ?action=create_student_from_dashboard. Students added this way receive isValid = 1 automatically.Edit a student
Navigate to
?action=show_edit_student_form&studentId= and submit to ?action=update_student. You can update personal data, semester, grade average, and career progress.Student routes
| Route action | Controller method | Description |
|---|---|---|
manage_students | showStudentList | Paginated list with institution, campus, and career filters |
view_student_details | showStudentDetails | Full profile and document view |
show_add_student_form | showAddStudentForm | Registration form |
create_student_from_dashboard | createStudentFromDashboard | POST handler — creates and auto-validates the student |
show_edit_student_form | showEditStudentForm | Edit form for an existing student |
update_student | updateStudent | POST handler — updates student and user data |
Researcher management
List researchers
Navigate to
?action=manage_researchers. The list is scoped by role.Researcher details
Navigate to
?action=view_researcher_details&researcherId= to see full profile data.Add a researcher
Navigate to
?action=show_add_researcher_form and submit to ?action=create_researcher_from_dashboard. Researchers added this way receive isValid = 1 automatically.Researcher routes
| Route action | Controller method | Description |
|---|---|---|
manage_researchers | showResearcherList | Researcher list scoped by role |
view_researcher_details | showResearcherDetails | Full profile view |
show_add_researcher_form | showAddResearcherForm | Registration form |
create_researcher_from_dashboard | createResearcherFromDashboard | POST handler — creates and auto-validates the researcher |
Coordinator management
Coordinators have two subtypes set by theitsInstitutionalCoordinator flag:
- Institutional coordinator (
itsInstitutionalCoordinator = 1,idUserType = 2) — manages all campuses within an institution. - Campus coordinator (
itsInstitutionalCoordinator = 0,idUserType = 3) — manages a single campus.
Open the coordinator list
Navigate to Manage Coordinators (
?action=manage_coordinators). Institutional coordinators see only coordinators within their institution. The currently logged-in coordinator is excluded from the list.Add a coordinator
Click Add coordinator (
?action=show_add_coordinator_form). Select the institution, campus, coordinator type, and fill in the personal details. Submit to ?action=create_coordinator_from_dashboard. The email is built from the username and a campus domain, which must match the campus’s allowed domain list.Coordinator routes
| Route action | Controller method | Description |
|---|---|---|
manage_coordinators | showCoordinatorList | Paginated list with institution, campus, and type filters |
show_add_coordinator_form | showAddCoordinatorForm | Registration form |
create_coordinator_from_dashboard | createCoordinatorFromDashboard | POST handler — creates the coordinator account |
show_edit_coordinator_form | showEditCoordinatorForm | Edit form for an existing coordinator |
update_coordinator_from_dashboard | updateCoordinatorFromDashboard | POST handler — updates the coordinator account |
Password management
Any authenticated user can change their own password through the change password form.Open the change password form
Navigate to
?action=change_password. This renders the form at views/user/change_password.php.Verified email management
Theverified_emails table records email addresses that have completed OTP verification during the pre-registration flow. Admins and coordinators can browse this list to audit which addresses have been verified.
Navigate to ?action=manage_verified_emails to open the list, handled by VerifiedEmailController::showVerifiedEmails. You can sort by date or email address, filter by search term, and paginate through results.
Role scoping applies: coordinators (roles 2 and 3) see only verified emails whose domain matches the domains configured on their campus.