HCCTS · Internal Tool · Restricted — Admins & Editors

Admin Guide

Reference for the HCCTS Staff Operations Portal's admin dashboard and content-management tools — for department editors, approvers, and portal admins. For the general staff-facing pages (homepage, department pages, sites, calendars, search, requests), see the User Guide.

Audience Admins & Editors
Sections 8
Updated August 31, 2026
This guide is restricted. The staff-only access gate must be satisfied first. In the current production build, general staff authentication uses authorized HCCTS Google Workspace identities through Firebase Authentication; admin/editor tools then enforce their own server-side role and permission checks.
Admin

Admin Dashboard

The landing page for every editor/admin tool, gated behind the admin/editor login. It shows only the tools the signed-in role is actually permitted to use.

/admin.html — admin dashboard
Admin Dashboard with tool tiles
The "Development Preview — using local data" banner in this representative screenshot reflects the local screenshot environment only. The August 31 production build uses the live staff access flow; management permissions continue to be enforced server-side.
Admin

Department Request Queue

The approver-side view of every request routed to a given department.

/editor.html — department request queue
Department Request Queue
Admin

Department Content Tools

Three related tools cover everything about a single department's page and behavior: its editorial content, its structural settings, and (for Academic Services specifically) a dedicated content model.

Department Content Editor

Department Content Editor /department-editor.html

Edits a department’s overview text, contacts, and resource links — the content that renders on that department’s public page.

Department EditorPortal Administrator
Department Settings

Department Settings /department-settings.html

Structural settings for a department (icon, color, display order, status) rather than its written content.

Portal Administrator
Academic Services Manager

Academic Services Manager /academic-services-manager.html

A specialized content editor just for the Academic Services department page, which has its own richer content model (programs, compliance-related sections) beyond the generic department template.

Department EditorPortal Administrator
Admin

Site-Wide Content Managers

Content that isn't scoped to one department is split across dedicated managers rather than one catch-all settings page — each tool owns exactly one kind of sitewide content.

Homepage CMS

Homepage CMS /homepage-cms.html

The only editing surface for the homepage. Deliberately structured-fields-only — there is no rich-text or raw-HTML field anywhere on this page, by design, so the homepage can’t become an arbitrary-HTML injection point.

Portal Administrator
Sites Manager

Sites Manager /sites-manager.html

Add, edit, and reorder HCCTS site records (address, contact, photo) shown on the public Sites page.

Portal Administrator
Calendar Manager

Calendar Manager /calendar-manager.html

Maintains the calendar entries shown on the public Calendars page, built on the portal’s shared CMS-manager framework.

Portal Administrator
Custom Systems

Custom Systems /custom-systems-admin.html

The catalog of HCCTS’s internal digital tools shown on the Digital Tools page and on relevant department pages. URLs are scheme-validated server-side (http/https only) to close a stored-XSS path documented in the project’s own security audit.

Portal Administrator
Organizational Links Manager

Organizational Links Manager /organizational-links-manager.html

Curates the external organizational links shown on the homepage.

Portal Administrator
Help & Support Manager

Help & Support Manager /help-support-manager.html

Maintains the Help & Support content surfaced to staff.

Portal Administrator
Request Routing Manager

Request Routing Manager /request-routing-manager.html

Configures where each request type on the Submit a Request form is routed — a department, an approver, or an external destination.

Portal Administrator
Global Portal Settings

Global Portal Settings /global-settings-manager.html

Sitewide configuration that doesn’t belong to any one content area.

Portal Administrator
Legal & Policy Manager

Legal & Policy Manager /legal-policy-manager.html

Metadata only (effective dates, version notes) for the Privacy Policy and Terms of Service. The legal text itself is not editable here by design — it lives in versioned code, not a CMS field.

Portal Administrator
Admin

Users & Audit Log

Who has access, and a record of what every admin/editor action changed.

User Management

User Management /users.html

Manage staff/editor/admin accounts and their roles.

Portal Administrator
Audit Log

Audit Log /audit-log.html

A history of admin and editor actions across the portal’s content tools, for accountability and troubleshooting.

Portal Administrator
Admin

Data Health & Link Review

Two maintenance tools that check the portal's own content for problems rather than editing it directly.

Coda Data Health

Coda Data Health /coda-health.html

Surfaces the status of the portal’s Coda-backed data sources — a diagnostic view, not a content editor.

Portal Administrator
Link Review

Link Review /link-review.html

Reviews links across the portal’s content for problems (e.g. broken links). A scheduled Netlify Function (links-validate-scheduled, run daily per netlify.toml) keeps this check running automatically as well as on demand.

Portal Administrator
Reference

Roles & Permissions

Access is role-based and enforced server-side in netlify/functions/_lib/permissions.js, not only by which links a given UI happens to show.

RoleCan generally do
StaffEnter through the staff access gate (Google Workspace SSO in the current production configuration), view staff-facing portal content, and submit requests. No admin/editor tool access.
Department EditorEdit that department's own content (Department Content Editor / Academic Services Manager) and act as approver on that department's request queue.
ApproverReview and action requests routed to their queue on the Department Request Queue tool.
Portal AdministratorFull access to every admin/editor tool: all department content and settings, all sitewide content managers, Users, Audit Log, and the data-health/link-review tools.
Current identity boundary: the staff Google sign-in path authorizes the exact configured HCCTS staff domain (currently hccts.org). Accounts on subdomains such as student.hccts.org are explicitly rejected. A Users-directory record can enrich role and department metadata, but it is not required for a valid staff-domain identity to enter the general staff portal.
Reference

Security Notes

A few of the more notable, code-documented security decisions in this project:

Restricted publish directoryNetlify's publish directory is a dedicated, allowlist-built dist/, not the repository root — per netlify.toml's own comments, publishing the raw repo previously made data/requests-store.json, data/audit-log-store.json, tests/, scripts/, and docs/ directly downloadable by anyone.
Content-Security-PolicyA restrictive CSP is set for every route, allow-listing only the specific third-party origins the app's client code needs, including Firebase/Google authentication, Cloudinary, and Google Fonts.
Custom Systems URL validationThe project's own July 2026 production-readiness audit found and fixed a stored-XSS gap where a Custom System's URL field had no scheme check before being rendered into an href; it's now restricted to http(s) only, matching the same check already used elsewhere in the codebase.
Staff authentication & sessionsGoogle sign-in is verified server-side from the Firebase ID token, the exact allowed staff domain is checked before access is granted, and the portal then issues a signed HttpOnly staff session cookie. Student subdomains are rejected before role overrides are considered. Password login remains rate-limited when the fallback is enabled.
Password fallback rate limitSTAFF_LOGIN_MAX_ATTEMPTS controls the maximum allowed staff-password login attempts within the configured rate-limit window. Keep this value in Netlify environment variables; never place the password or secret values in portal HTML, JavaScript, screenshots, or documentation.
This is a summary drawn from the project's own docs and code comments (SECURITY_HARDENING_REPORT.md, docs/PRODUCTION_READINESS_AUDIT_2026-07-25.md, netlify.toml), not an independent penetration test. No credentials, secrets, or real values are reproduced here.