shareyourthoughtswith.me

Manage role

Share Your Thoughts With Me has three roles:

How managers are created

Two paths:

Self-service signup. Anyone visits /manage/signup and fills in:

…and clicks Create account. The account is active immediately; the visitor is signed in and redirected to /manage/posts. The signup form is rate-limited (30 attempts per minute per IP) and includes a hidden honeypot to defeat naive bots. There is no email verification and no admin approval step.

Admin provisioning. The admin opens /admin/managers, fills in:

…and clicks Create manager. The admin then opens the manager's post at /admin/posts/{id} and assigns the manager to it via the Assigned managers section.

A manager can also create their own posts from /manage/posts. Posts the manager creates are auto-assigned to that manager.

What a manager sees

A manager attempting /manage/posts/{id} for a post they don't own gets 403 — You don't have access to that post. Attempting /admin/* redirects to the admin login.

What a manager cannot do

Admin = manager whose email is on the allowlist

Issue #14 unified admin sign-in with manager sign-in. There is no separate /admin/login form, no separate admin password, no separate admin cookie. The admin signs in at /manage/login with their manager-account email and password. Admin privilege is granted at request time when manager.email appears in SYTWM_ADMIN_EMAILS (falling back to [SYTWM_ADMIN_EMAIL]). Admins see everything any manager sees plus the /admin/* routes.

SYTWM_ADMIN_TOKEN is the initial password for the admin's manager account, applied by a one-time bootstrap step on first deploy. After the admin signs in they can rotate the password via /manage/account/password like any other manager. The env var is not consulted on subsequent deploys.

Password reset

A manager who has forgotten their password should ask the admin. The admin opens /admin/managers/{id} and uses Reset password to set a new one, then communicates it out-of-band.

Email-based password reset and magic-link login are tracked as future-state improvements (jobs/004-manage-experience/008-improvements.md).

Disabling a manager

The admin clicks Disable this manager from /admin/managers/{id}. The manager's next login attempt fails with "Your manager account is disabled." Existing sessions remain valid until the cookie expires (7 days). To revoke immediately, the admin can also delete the manager (cascading their post assignments).

Audit

Every manager-related action records a telemetry event:

These surface in /admin/telemetry as event counts.