“Simply all the tools that my team and I need.”+ Karen Yue · Director of Digital Marketing Technology +
diff --git a/internal/server/server.go b/internal/server/server.go index 72c62bf..a270a10 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -32,6 +32,7 @@ type Server struct { func New(cfg config.Config, logger *slog.Logger) (*Server, error) { tmpl, err := template.ParseFS( web.Templates, + "templates/auth_base.html", "templates/login.html", "templates/dashboard.html", "templates/signup.html", diff --git a/internal/server/views.go b/internal/server/views.go index c001b81..a7ea11d 100644 --- a/internal/server/views.go +++ b/internal/server/views.go @@ -17,6 +17,8 @@ func (s *Server) render(w http.ResponseWriter, name string, data any) { // PageData contains fields shared by the templates for now. type PageData struct { + Title string + View string Email string Error string Info string @@ -26,17 +28,29 @@ type PageData struct { } func newLoginData(email, errMsg, token string) PageData { - return PageData{Email: email, Error: errMsg, CSRFToken: token} + return PageData{Title: "Sign in · Auth Demo", View: "login", Email: email, Error: errMsg, CSRFToken: token} } func newUnauthorizedData(errMsg, token string) PageData { - return PageData{Error: errMsg, CSRFToken: token} + return PageData{ + Title: "Access denied · Auth Demo", + View: "unauthorized", + Error: errMsg, + CSRFToken: token, + } } func newDashboardData(email, token, createdAt, createdAtISO string) PageData { - return PageData{Email: email, CSRFToken: token, CreatedAt: createdAt, CreatedAtISO: createdAtISO} + return PageData{ + Title: "Dashboard · Auth Demo", + View: "dashboard", + Email: email, + CSRFToken: token, + CreatedAt: createdAt, + CreatedAtISO: createdAtISO, + } } func newSignupData(email, errMsg, token string) PageData { - return PageData{Email: email, Error: errMsg, CSRFToken: token} + return PageData{Title: "Create account · Auth Demo", View: "signup", Email: email, Error: errMsg, CSRFToken: token} } diff --git a/web/templates/auth_base.html b/web/templates/auth_base.html new file mode 100644 index 0000000..8d0c69c --- /dev/null +++ b/web/templates/auth_base.html @@ -0,0 +1,272 @@ +{{define "auth_base"}} + + +
+ + +“Simply all the tools that my team and I need.”+ Karen Yue · Director of Digital Marketing Technology +
Pick an auth flow to continue.
+You're signed in as {{.Email}}.
++ Member since + . +
+ {{end}} +This dashboard will grow alongside the authentication features.
+{{if .Error}}{{.Error}}{{else}}You do not have permission to view that page.{{end}}
+You are signed in as {{.Email}}.
- {{if .CreatedAt}} -- Member since - . -
- {{end}} -- This placeholder dashboard will evolve as we flesh out the auth flow. -
- -Authenticate with the demo credentials below to view the dashboard.
-
- Email: user@example.com
- Password:
-
- Password123
-
- Need an account? - Create one now. -
-Build your design system effortlessly with our powerful component library.
+{{.Error}}
+Provide your email and a strong password to create an account.
- {{if .Error}} -- Already registered? - Return to sign in. -
-Join Nucleus UI and start designing with ease.
+{{.Info}}
+{{.Error}}
+- {{if .Error}}{{.Error}}{{else}}You do not have permission to view that - page.{{end}} -
- Back to safety -