feat: add /bookshelf route and update redirects
- Add /bookshelf route as default page for logged-in users - Update login and register handlers to redirect to /bookshelf - Update homepage to auto-redirect to /bookshelf when logged in - Preserve /dashboard route for backward compatibility - Update test redirects to use /bookshelf Changes: - main.go: Add /bookshelf protected route - auth.go: Change login/register redirects from /api/dashboard to /bookshelf (2 locations) - edge_cases_test.go: Update test redirect to /bookshelf - Maintains backward compatibility with existing /dashboard route This makes the beautiful bookshelf the default landing page for all authenticated users while keeping the old dashboard accessible.
This commit is contained in:
+23
-1
@@ -168,7 +168,29 @@ func main() {
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
// Dashboard route (protected)
|
// Bookshelf route (protected) - new default for logged-in users
|
||||||
|
protected.GET("/bookshelf", func(c echo.Context) error {
|
||||||
|
userID := c.Get("user_id").(string)
|
||||||
|
userEmail := c.Get("user_email").(string)
|
||||||
|
userUsername := c.Get("user_username").(string)
|
||||||
|
userRole := c.Get("user_role").(string)
|
||||||
|
|
||||||
|
user := templates.User{
|
||||||
|
ID: userID,
|
||||||
|
Email: userEmail,
|
||||||
|
Username: userUsername,
|
||||||
|
Role: userRole,
|
||||||
|
}
|
||||||
|
|
||||||
|
var buf bytes.Buffer
|
||||||
|
err := templates.BookShelf(user).Render(c.Request().Context(), &buf)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return c.HTML(http.StatusOK, buf.String())
|
||||||
|
})
|
||||||
|
|
||||||
|
// Dashboard route (protected) - keep for backward compatibility
|
||||||
protected.GET("/dashboard", func(c echo.Context) error {
|
protected.GET("/dashboard", func(c echo.Context) error {
|
||||||
userID := c.Get("user_id").(string)
|
userID := c.Get("user_id").(string)
|
||||||
userEmail := c.Get("user_email").(string)
|
userEmail := c.Get("user_email").(string)
|
||||||
|
|||||||
@@ -465,7 +465,7 @@ func TestHTMXRequests(t *testing.T) {
|
|||||||
w.Write([]byte(`<div class="text-green-500">Registration successful! Redirecting...</div>
|
w.Write([]byte(`<div class="text-green-500">Registration successful! Redirecting...</div>
|
||||||
<script>
|
<script>
|
||||||
localStorage.setItem('token', 'fake-token');
|
localStorage.setItem('token', 'fake-token');
|
||||||
window.location.href = '/api/dashboard';
|
window.location.href = '/bookshelf';
|
||||||
</script>`))
|
</script>`))
|
||||||
} else {
|
} else {
|
||||||
json.NewEncoder(w).Encode(map[string]interface{}{
|
json.NewEncoder(w).Encode(map[string]interface{}{
|
||||||
|
|||||||
@@ -256,7 +256,7 @@ localStorage.setItem('token', '%s');
|
|||||||
localStorage.setItem('refreshToken', '%s');
|
localStorage.setItem('refreshToken', '%s');
|
||||||
localStorage.setItem('user', JSON.stringify(%s));
|
localStorage.setItem('user', JSON.stringify(%s));
|
||||||
document.cookie = 'token=%s; path=/; max-age=3600';
|
document.cookie = 'token=%s; path=/; max-age=3600';
|
||||||
window.location.href = '/api/dashboard';
|
window.location.href = '/bookshelf';
|
||||||
</script>`, accessToken, refreshToken, fmt.Sprintf(`{"id":"%s","email":"%s","username":"%s"}`, uuid.UUID(user.ID.Bytes).String(), user.Email, user.Username), accessToken)
|
</script>`, accessToken, refreshToken, fmt.Sprintf(`{"id":"%s","email":"%s","username":"%s"}`, uuid.UUID(user.ID.Bytes).String(), user.Email, user.Username), accessToken)
|
||||||
return c.HTML(http.StatusCreated, html)
|
return c.HTML(http.StatusCreated, html)
|
||||||
}
|
}
|
||||||
@@ -412,7 +412,7 @@ localStorage.setItem('token', '%s');
|
|||||||
localStorage.setItem('refreshToken', '%s');
|
localStorage.setItem('refreshToken', '%s');
|
||||||
localStorage.setItem('user', JSON.stringify(%s));
|
localStorage.setItem('user', JSON.stringify(%s));
|
||||||
document.cookie = 'token=%s; path=/; max-age=3600';
|
document.cookie = 'token=%s; path=/; max-age=3600';
|
||||||
window.location.href = '/api/dashboard';
|
window.location.href = '/bookshelf';
|
||||||
</script>`, accessToken, refreshToken, fmt.Sprintf(`{"id":"%s","email":"%s","username":"%s","first_name":"%s","last_name":"%s"}`, uuid.UUID(user.ID.Bytes).String(), user.Email, user.Username, user.FirstName.String, user.LastName.String), accessToken)
|
</script>`, accessToken, refreshToken, fmt.Sprintf(`{"id":"%s","email":"%s","username":"%s","first_name":"%s","last_name":"%s"}`, uuid.UUID(user.ID.Bytes).String(), user.Email, user.Username, user.FirstName.String, user.LastName.String), accessToken)
|
||||||
return c.HTML(http.StatusOK, html)
|
return c.HTML(http.StatusOK, html)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user