3
0
corteza/messaging/routes.go
Denis Arh 980b6d581c Refactor JWT encoder/handler
Handler is no longer passed as argument into routes etc but initialized in the Init()
and stored into auth.DefaultJwtHandler.
2019-04-27 13:17:37 +02:00

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)
}
}