Skip to main content

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.

Every user account starts in an unvalidated state (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:
RoleIDScope
Admin1Full access to all users across all institutions and campuses
Institutional coordinator2Scoped to users whose campus belongs to their institution
Campus coordinator3Scoped to users whose campus matches their own campus
All user management routes enforce role checks via BaseController::requireRole. Attempts to access or modify users outside the allowed scope are rejected.

User validation

When a user registers on the platform, their isValid column is set to 0. You must set it to 1 to activate the account.
1

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).
2

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.
The validation toggle sets 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 actionController methodDescription
manage_studentsshowStudentListPaginated list with institution, campus, and career filters
view_student_detailsshowStudentDetailsFull profile and document view
show_add_student_formshowAddStudentFormRegistration form
create_student_from_dashboardcreateStudentFromDashboardPOST handler — creates and auto-validates the student
show_edit_student_formshowEditStudentFormEdit form for an existing student
update_studentupdateStudentPOST 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 actionController methodDescription
manage_researchersshowResearcherListResearcher list scoped by role
view_researcher_detailsshowResearcherDetailsFull profile view
show_add_researcher_formshowAddResearcherFormRegistration form
create_researcher_from_dashboardcreateResearcherFromDashboardPOST handler — creates and auto-validates the researcher

Coordinator management

Coordinators have two subtypes set by the itsInstitutionalCoordinator flag:
  • Institutional coordinator (itsInstitutionalCoordinator = 1, idUserType = 2) — manages all campuses within an institution.
  • Campus coordinator (itsInstitutionalCoordinator = 0, idUserType = 3) — manages a single campus.
1

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.
2

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.
3

Edit a coordinator

Click Edit (?action=show_edit_coordinator_form&userId=). Update profile data or coordinator type and submit to ?action=update_coordinator_from_dashboard.

Coordinator routes

Route actionController methodDescription
manage_coordinatorsshowCoordinatorListPaginated list with institution, campus, and type filters
show_add_coordinator_formshowAddCoordinatorFormRegistration form
create_coordinator_from_dashboardcreateCoordinatorFromDashboardPOST handler — creates the coordinator account
show_edit_coordinator_formshowEditCoordinatorFormEdit form for an existing coordinator
update_coordinator_from_dashboardupdateCoordinatorFromDashboardPOST handler — updates the coordinator account

Password management

Any authenticated user can change their own password through the change password form.
1

Open the change password form

Navigate to ?action=change_password. This renders the form at views/user/change_password.php.
2

Submit the new password

Enter the current password, new password, and confirmation, then submit to ?action=update_own_password. UserController::update_own_password verifies the current password with password_verify, enforces a minimum length of 8 characters, and stores the new bcrypt hash.

Verified email management

The verified_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.

Build docs developers (and LLMs) love