Handler is no longer passed as argument into routes etc but initialized in the Init() and stored into auth.DefaultJwtHandler.
41 lines
1008 B
Go
41 lines
1008 B
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/go-chi/chi"
|
|
|
|
"github.com/crusttech/crust/internal/auth"
|
|
"github.com/crusttech/crust/internal/config"
|
|
"github.com/crusttech/crust/internal/middleware"
|
|
"github.com/crusttech/crust/internal/routes"
|
|
"github.com/crusttech/crust/messaging/rest"
|
|
"github.com/crusttech/crust/messaging/websocket"
|
|
)
|
|
|
|
func Routes(ctx context.Context) *chi.Mux {
|
|
r := chi.NewRouter()
|
|
middleware.Mount(ctx, r, flags.http)
|
|
MountRoutes(ctx, r)
|
|
routes.Print(r)
|
|
middleware.MountSystemRoutes(ctx, r, flags.http)
|
|
return r
|
|
}
|
|
|
|
func MountRoutes(ctx context.Context, r chi.Router) {
|
|
// Only protect application routes with JWT
|
|
r.Group(func(r chi.Router) {
|
|
r.Use(
|
|
auth.DefaultJwtHandler.Verifier(),
|
|
auth.DefaultJwtHandler.Authenticator(),
|
|
)
|
|
mountRoutes(r, flags.http, rest.MountRoutes(), websocket.MountRoutes(ctx, flags.repository))
|
|
})
|
|
}
|
|
|
|
func mountRoutes(r chi.Router, opts *config.HTTP, mounts ...func(r chi.Router)) {
|
|
for _, mount := range mounts {
|
|
mount(r)
|
|
}
|
|
}
|