mirror of
https://github.com/steveiliop56/tinyauth.git
synced 2026-05-09 13:58:11 +00:00
56 lines
1.7 KiB
Go
56 lines
1.7 KiB
Go
package bootstrap
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/tinyauthapp/tinyauth/internal/controller"
|
|
"github.com/tinyauthapp/tinyauth/internal/middleware"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func (app *BootstrapApp) setupRouter() error {
|
|
// we don't want gin debug mode
|
|
gin.SetMode(gin.ReleaseMode)
|
|
|
|
engine := gin.New()
|
|
engine.Use(gin.Recovery())
|
|
|
|
if len(app.config.Auth.TrustedProxies) > 0 {
|
|
err := engine.SetTrustedProxies(app.config.Auth.TrustedProxies)
|
|
|
|
if err != nil {
|
|
return fmt.Errorf("failed to set trusted proxies: %w", err)
|
|
}
|
|
}
|
|
|
|
contextMiddleware := middleware.NewContextMiddleware(app.log, app.runtime, app.services.authService, app.services.oauthBrokerService)
|
|
engine.Use(contextMiddleware.Middleware())
|
|
|
|
uiMiddleware, err := middleware.NewUIMiddleware()
|
|
|
|
if err != nil {
|
|
return fmt.Errorf("failed to initialize UI middleware: %w", err)
|
|
}
|
|
|
|
engine.Use(uiMiddleware.Middleware())
|
|
|
|
zerologMiddleware := middleware.NewZerologMiddleware(app.log)
|
|
|
|
engine.Use(zerologMiddleware.Middleware())
|
|
|
|
apiRouter := engine.Group("/api")
|
|
|
|
controller.NewContextController(app.log, app.config, app.runtime, apiRouter)
|
|
controller.NewOAuthController(app.log, app.config, app.runtime, apiRouter, app.services.authService)
|
|
controller.NewOIDCController(app.log, app.services.oidcService, apiRouter)
|
|
controller.NewProxyController(app.log, app.runtime, apiRouter, app.services.accessControlService, app.services.authService)
|
|
controller.NewUserController(app.log, app.runtime, apiRouter, app.services.authService)
|
|
controller.NewResourcesController(app.config, &engine.RouterGroup)
|
|
controller.NewHealthController(apiRouter)
|
|
controller.NewWellKnownController(app.services.oidcService, &engine.RouterGroup)
|
|
|
|
app.router = engine
|
|
return nil
|
|
}
|