package server import ( "github.com/gin-gonic/gin" "github.com/dhao2001/mygo/internal/app" "github.com/dhao2001/mygo/internal/handler" "github.com/dhao2001/mygo/internal/middleware" ) func setupProtectedRoutes(rg *gin.RouterGroup, webApp *app.WebApp) { jwtSecret := []byte(webApp.Config.JWT.Secret) accountHandler := handler.NewAccountHandler(webApp.AuthService) fileHandler := handler.NewFileHandler(webApp.FileService) adminHandler := handler.NewAdminHandler(webApp.UserRepo) rg.Use(middleware.AuthRequired(jwtSecret)) account := rg.Group("/account") { account.GET("", accountHandler.GetAccount) passkeys := account.Group("/passkeys") { passkeys.GET("", accountHandler.ListPasskeys) passkeys.POST("", accountHandler.CreatePasskey) passkeys.DELETE("/:id", accountHandler.RevokePasskey) } } files := rg.Group("/files") { files.GET("", fileHandler.List) files.POST("", fileHandler.Upload) files.GET("/:id", fileHandler.Get) files.GET("/:id/content", fileHandler.Download) files.PUT("/:id", fileHandler.Update) files.DELETE("/:id", fileHandler.Delete) } admin := rg.Group("/admin") admin.Use(middleware.AdminRequired(webApp.UserRepo)) { admin.GET("/users", adminHandler.ListUsers) admin.GET("/users/:id", adminHandler.GetUser) admin.DELETE("/users/:id", adminHandler.DeleteUser) } }