How employees get into the internal app — and why they sometimes can't.
Who & where
Staff, at /login. You also land here automatically if you try to open any /admin/… page without a session.
Happy path
- The login card shows “HR Portal” and a single “Sign in with Google” button.
- You authenticate with your Freedom Solar Google account in the Google popup.
- On success you're dropped at Jobs (
/admin/jobs), the default staff landing page.

The staff login screen. Sign-in is restricted to the company Google domain.
How access actually works
- Invite-only. Signing in with Google only works if an admin has already created your user (Settings → Users) and it's active. A valid Google account with no matching user is refused with “No Freedom HR account exists for … Ask an administrator to add you.”
- Sessions. After login you hold a secure session cookie. Every internal page checks it; if it's missing/expired you bounce back to
/login.
- Sign out is in the top-right of the app.
Issues that may arise
- “No Freedom HR account exists…” — you haven't been invited yet, or your account was deactivated. An admin adds/reactivates you in Settings → Users.
- Wrong Google account. Sign-in is domain-restricted; a personal Gmail will be rejected. Pick your company account in the Google popup.
- Popup blocked / cancelled. The page shows a sign-in error; allow popups and retry.
- Config warning. If the server is missing its Google client ID, the button is replaced by a warning — that's an environment/config problem for admins, not something an end user can fix.
💡 For local development: there's a dev-only bypass at /dev/login that lists seeded staff and new hires so you can jump into either realm without Google or a real magic link. It exists only in the development environment.