goshort/internal/server/api/router.go
Gustavo Maronato 4fef573447
Some checks failed
Check / checks (push) Failing after 4m11s
added frontend oidc support
2024-03-09 05:42:36 -05:00

59 lines
1.4 KiB
Go

package apiserver
import (
"net/http"
authmiddleware "git.maronato.dev/maronato/goshort/internal/server/middleware/auth"
"github.com/go-chi/chi/v5"
)
func NewAPIRouter(handler *APIHandler) http.Handler {
mux := chi.NewRouter()
// Auth routes
mux.Post("/login", handler.Login)
mux.Post("/logout", handler.Logout)
mux.Post("/signup", handler.Signup)
// Public routes
mux.Get("/config", handler.PublicConfig)
// Authenticated routes
mux.Group(func(r chi.Router) {
// UI and API endpoints
r.Group(func(r chi.Router) {
r.Use(authmiddleware.AuthRequired(authmiddleware.TokenAuth, authmiddleware.SessionAuth))
// "Me" routes
r.Get("/me", handler.Me)
// Shorts routes
r.Get("/shorts", handler.ListShorts)
r.Post("/shorts", handler.CreateShort)
r.Get("/shorts/{id}", handler.FindShort)
r.Delete("/shorts/{id}", handler.DeleteShort)
r.Get("/shorts/{id}/logs", handler.ListShortLogs)
})
// UI-only endpoints
r.Group(func(r chi.Router) {
r.Use(authmiddleware.AuthRequired(authmiddleware.SessionAuth))
// "Me" routes
r.Delete("/me", handler.DeleteMe)
// Sessions routes
r.Get("/sessions", handler.ListSessions)
r.Delete("/sessions/{id}", handler.DeleteSession)
// Tokens routes
r.Get("/tokens", handler.ListTokens)
r.Post("/tokens", handler.CreateToken)
r.Patch("/tokens/{id}", handler.ChangeTokenName)
r.Delete("/tokens/{id}", handler.DeleteToken)
})
})
return mux
}