server auth
This commit is contained in:
@@ -12,6 +12,7 @@ import (
|
||||
"github.com/go-chi/chi/v5"
|
||||
"github.com/go-chi/chi/v5/middleware"
|
||||
|
||||
"github.com/tim/cairnquire/apps/server/internal/auth"
|
||||
"github.com/tim/cairnquire/apps/server/internal/config"
|
||||
"github.com/tim/cairnquire/apps/server/internal/docs"
|
||||
"github.com/tim/cairnquire/apps/server/internal/realtime"
|
||||
@@ -31,6 +32,7 @@ type Dependencies struct {
|
||||
Hub *realtime.Hub
|
||||
SyncService *sync.Service
|
||||
SyncRepo *sync.Repository
|
||||
Auth *auth.Service
|
||||
}
|
||||
|
||||
type Server struct {
|
||||
@@ -42,6 +44,8 @@ type Server struct {
|
||||
hub *realtime.Hub
|
||||
syncService *sync.Service
|
||||
syncRepo *sync.Repository
|
||||
auth *auth.Service
|
||||
authLimiter *rateLimiter
|
||||
templates *template.Template
|
||||
webEnabled bool
|
||||
}
|
||||
@@ -68,6 +72,8 @@ func New(deps Dependencies) (http.Handler, error) {
|
||||
hub: deps.Hub,
|
||||
syncService: deps.SyncService,
|
||||
syncRepo: deps.SyncRepo,
|
||||
auth: deps.Auth,
|
||||
authLimiter: newRateLimiter(5, time.Minute),
|
||||
templates: templates,
|
||||
}
|
||||
|
||||
@@ -82,15 +88,37 @@ func New(deps Dependencies) (http.Handler, error) {
|
||||
router.Use(server.timeoutExceptWebSocket(30 * time.Second))
|
||||
router.Use(server.requestLogger)
|
||||
router.Use(server.securityHeaders)
|
||||
router.Use(server.apiKeyMiddleware)
|
||||
router.Use(server.authMiddleware)
|
||||
|
||||
router.Get("/", server.handleIndex)
|
||||
router.Get("/login", server.handleLoginPage)
|
||||
router.Get("/account", server.handleAccountPage)
|
||||
router.Get("/device/verify", server.handleDeviceVerifyPage)
|
||||
router.Get("/health", server.handleHealth)
|
||||
router.Get("/sw.js", server.handleServiceWorker)
|
||||
router.Get("/ws", server.handleWebSocket)
|
||||
router.Get("/api/auth/me", server.handleAuthMe)
|
||||
router.Post("/api/auth/register/password", server.handlePasswordRegister)
|
||||
router.Post("/api/auth/login/password", server.handlePasswordLogin)
|
||||
router.Post("/api/auth/logout", server.handleLogout)
|
||||
router.Post("/api/auth/password/change", server.handleChangePassword)
|
||||
router.Delete("/api/auth/account", server.handleDeleteAccount)
|
||||
router.Post("/api/auth/passkeys/register/begin", server.handlePasskeyRegisterBegin)
|
||||
router.Post("/api/auth/passkeys/register/finish", server.handlePasskeyRegisterFinish)
|
||||
router.Post("/api/auth/passkeys/login/begin", server.handlePasskeyLoginBegin)
|
||||
router.Post("/api/auth/passkeys/login/finish", server.handlePasskeyLoginFinish)
|
||||
router.Get("/api/tokens", server.handleListAPITokens)
|
||||
router.Post("/api/tokens", server.handleCreateAPIToken)
|
||||
router.Delete("/api/tokens/{id}", server.handleRevokeAPIToken)
|
||||
router.Post("/api/device/start", server.handleDeviceStart)
|
||||
router.Post("/api/device/approve", server.handleDeviceApprove)
|
||||
router.Post("/api/device/token", server.handleDeviceToken)
|
||||
router.Get("/api/device/verify", server.handleDeviceVerify)
|
||||
router.Post("/api/admin/login", server.handleAdminLogin)
|
||||
router.Get("/api/admin/users", server.handleAdminUsers)
|
||||
router.Post("/api/admin/users", server.handleAdminCreateUser)
|
||||
router.Patch("/api/admin/users/{id}/role", server.handleAdminUpdateUserRole)
|
||||
router.Get("/api/admin/auth-users", server.handleAdminAuthUsers)
|
||||
router.Get("/api/admin/workspace", server.handleAdminWorkspace)
|
||||
router.Post("/api/admin/workspace/sync", server.handleAdminWorkspaceSync)
|
||||
router.Get("/docs", server.handleDocsIndex)
|
||||
|
||||
Reference in New Issue
Block a user