Work / Learning Platform / Wiki / Surfaces
login
Surfacecanonicalverified 2026-10-04
SURFACE.WEB.AUTH.LOGINSummary
Sign-in with email and password, GitHub or Google.
Raw wireframe
- .context/designs/web/auth/login.html
- .context/designs/web/auth/login-error.html
Why it is drawn this way
All three ways in are drawn, and the default build shows one. auth-providers.ts reads NEXT_PUBLIC_AUTH_PROVIDERS and falls back to google alone. With the default, the email form and the divider are not rendered. See auth-providers.
A wrong password is reported under Email. The server says "Invalid email or password. Please try again." login-form.tsx puts any message containing email or user under the email field. The same text shows as a toast.
Success goes to My Courses. router.push(redirect || "/my-courses"). A visitor sent here by Enroll Now returns to the course through ?redirect=.
The OAuth buttons are buttons. They open a popup; see oauth-callback.
"Email is required" cannot be reached. Both inputs are required, so the browser blocks an empty submit first.
The benefits panel promises certificates. benefits.ts says "Earn certificates upon completion". Nothing in the schema or the app issues one. It is drawn because it ships; see tasks.md T003.
Related
Sources
- apps/website/src/app/auth/login/page.tsx
- apps/website/src/app/auth/layout.tsx
- apps/website/src/app/auth/benefits.ts
- packages/ui/src/components/auth/login-form.tsx
- packages/ui/src/components/auth/auth-layout.tsx
- packages/ui/src/hooks/use-auth.ts