From 6b0a88ed4c4160e37fa26bfe05b5d8e0bdc2a1f0 Mon Sep 17 00:00:00 2001 From: cialloo Date: Sat, 25 Oct 2025 08:18:18 +0800 Subject: [PATCH] update --- api/Blog.api | 3 +- app/internal/handler/routes.go | 43 ++++++++++--------- .../middleware/superadminauthmiddleware.go | 24 +++++++++++ app/internal/svc/servicecontext.go | 12 +++++- 4 files changed, 59 insertions(+), 23 deletions(-) create mode 100644 app/internal/middleware/superadminauthmiddleware.go diff --git a/api/Blog.api b/api/Blog.api index 703531a..dce2dd1 100644 --- a/api/Blog.api +++ b/api/Blog.api @@ -37,7 +37,8 @@ type ( ) @server ( - prefix: /api/blog + middleware: SuperAdminAuthMiddleware + prefix: /api/blog ) service Blog { @doc ( diff --git a/app/internal/handler/routes.go b/app/internal/handler/routes.go index 1e44d8c..40bc0f4 100644 --- a/app/internal/handler/routes.go +++ b/app/internal/handler/routes.go @@ -13,26 +13,29 @@ import ( func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) { server.AddRoutes( - []rest.Route{ - { - // Get presigned URL for file download - Method: http.MethodPost, - Path: "/file/download", - Handler: DownloadPresignedURLHandler(serverCtx), - }, - { - // Get presigned URL for file upload - Method: http.MethodPost, - Path: "/file/upload", - Handler: UploadPresignedURLHandler(serverCtx), - }, - { - // Ping the server to check if it's alive - Method: http.MethodGet, - Path: "/ping", - Handler: pingHandler(serverCtx), - }, - }, + rest.WithMiddlewares( + []rest.Middleware{serverCtx.SuperAdminAuthMiddleware}, + []rest.Route{ + { + // Get presigned URL for file download + Method: http.MethodPost, + Path: "/file/download", + Handler: DownloadPresignedURLHandler(serverCtx), + }, + { + // Get presigned URL for file upload + Method: http.MethodPost, + Path: "/file/upload", + Handler: UploadPresignedURLHandler(serverCtx), + }, + { + // Ping the server to check if it's alive + Method: http.MethodGet, + Path: "/ping", + Handler: pingHandler(serverCtx), + }, + }..., + ), rest.WithPrefix("/api/blog"), ) } diff --git a/app/internal/middleware/superadminauthmiddleware.go b/app/internal/middleware/superadminauthmiddleware.go new file mode 100644 index 0000000..e519b1f --- /dev/null +++ b/app/internal/middleware/superadminauthmiddleware.go @@ -0,0 +1,24 @@ +package middleware + +import ( + "net/http" + + "git.cialloo.com/CiallooWeb/Blog/app/internal/config" +) + +type SuperAdminAuthMiddleware struct { + Config config.Config +} + +func NewSuperAdminAuthMiddleware(c config.Config) *SuperAdminAuthMiddleware { + return &SuperAdminAuthMiddleware{Config: c} +} + +func (m *SuperAdminAuthMiddleware) Handle(next http.HandlerFunc) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + // TODO generate middleware implement function, delete after code implementation + + // Passthrough to next handler if need + next(w, r) + } +} diff --git a/app/internal/svc/servicecontext.go b/app/internal/svc/servicecontext.go index 470817c..34944c1 100644 --- a/app/internal/svc/servicecontext.go +++ b/app/internal/svc/servicecontext.go @@ -5,22 +5,30 @@ import ( "database/sql" "git.cialloo.com/CiallooWeb/Blog/app/internal/config" + "git.cialloo.com/CiallooWeb/Blog/app/internal/middleware" "github.com/aws/aws-sdk-go-v2/aws" awsconfig "github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/credentials" "github.com/aws/aws-sdk-go-v2/service/s3" _ "github.com/lib/pq" + "github.com/zeromicro/go-zero/rest" ) type ServiceContext struct { - Config config.Config + Config config.Config + + SuperAdminAuthMiddleware rest.Middleware + S3Client *s3.Client DB *sql.DB } func NewServiceContext(c config.Config) *ServiceContext { return &ServiceContext{ - Config: c, + Config: c, + + SuperAdminAuthMiddleware: middleware.NewSuperAdminAuthMiddleware(c).Handle, + S3Client: initS3Client(c.S3), DB: initDatabase(c.Database), }