From 81adfa1ad9412ac4ba9afb3ab2b09fb8ad68c328 Mon Sep 17 00:00:00 2001 From: Mohammad Mahdi Date: Sat, 17 May 2025 20:28:18 +0330 Subject: [PATCH] Refactor JWT auth and remove DB dependency from config --- internal/auth/jwt.go | 13 ++++++++----- internal/config/config.go | 28 ++++++++-------------------- internal/server/router.go | 9 +++++---- 3 files changed, 21 insertions(+), 29 deletions(-) diff --git a/internal/auth/jwt.go b/internal/auth/jwt.go index 6e7cbd5..721a652 100644 --- a/internal/auth/jwt.go +++ b/internal/auth/jwt.go @@ -1,6 +1,7 @@ package auth import ( + "CatsOfMastodonBotGo/internal/config" "strings" "time" @@ -14,11 +15,13 @@ type JwtTokenGenerator struct { Audience string } -func NewJwtTokenGenerator(key string, issuer string, audience string) *JwtTokenGenerator { - return &JwtTokenGenerator{ - Key: key, - Issuer: issuer, - Audience: audience, +var JwtTokenGeneratorInstance *JwtTokenGenerator + +func InitJwtTokenGenerator() { + JwtTokenGeneratorInstance = &JwtTokenGenerator{ + Key: config.Config.JwtSecret, + Issuer: config.Config.JwtIssuer, + Audience: config.Config.JwtAudience, } } diff --git a/internal/config/config.go b/internal/config/config.go index 3832108..091267d 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -2,21 +2,19 @@ package config import ( //"CatsOfMastodonBotGo/internal/auth" - "CatsOfMastodonBotGo/internal/database" //"CatsOfMastodonBotGo/internal/services" "log" "os" - - "gorm.io/gorm" ) type config struct { - Db *gorm.DB - // PostService *services.PostService - // Jwt *auth.JwtTokenGenerator AdminPassword string Instance string Tag string + + JwtSecret string + JwtIssuer string + JwtAudience string } var Config *config @@ -55,26 +53,16 @@ func Load() *config { audience = "CatsOfMastodonBotGo" } - // Setup database - db, err := database.Connect() - if err != nil { - log.Fatal(err) - } - - //Setup PostService - // var postService = services.NewPostService(db) - - // // Setup Jwt - // var jwt = auth.NewJwtTokenGenerator(secret, issuer, audience) // Inititlize AppContext var appContext = &config{ - Db: db, - // PostService: postService, - // Jwt: jwt, AdminPassword: adminPassword, Instance: instance, Tag: tag, + + JwtSecret: secret, + JwtIssuer: issuer, + JwtAudience: audience, } return appContext diff --git a/internal/server/router.go b/internal/server/router.go index 3535d27..e5aad0f 100644 --- a/internal/server/router.go +++ b/internal/server/router.go @@ -1,7 +1,7 @@ package server import ( - "CatsOfMastodonBotGo/internal" + "CatsOfMastodonBotGo/internal/auth" "CatsOfMastodonBotGo/internal/web/handlers" "github.com/gin-contrib/cors" @@ -20,14 +20,15 @@ func SetupRouter() *gin.Engine { handlers.InitAdminDashboardHandler() handlers.InitApiEndpointHandler() + auth.InitJwtTokenGenerator() admin := r.Group("/admin") // My man, this is done way more efficient and fast in .NET, specially the authentication part admin.POST("/login", handlers.AdminDashboardHandlerInstance.Login) - admin.GET("/getmedia", appContext.Jwt.GinMiddleware(), handlers.AdminDashboardHandlerInstance.GetMedia) - admin.POST("/approve", appContext.Jwt.GinMiddleware(), handlers.AdminDashboardHandlerInstance.ApproveMedia) - admin.POST("/reject", appContext.Jwt.GinMiddleware(), handlers.AdminDashboardHandlerInstance.RejectMedia) + admin.GET("/getmedia", auth.JwtTokenGeneratorInstance.GinMiddleware(), handlers.AdminDashboardHandlerInstance.GetMedia) + admin.POST("/approve", auth.JwtTokenGeneratorInstance.GinMiddleware(), handlers.AdminDashboardHandlerInstance.ApproveMedia) + admin.POST("/reject", auth.JwtTokenGeneratorInstance.GinMiddleware(), handlers.AdminDashboardHandlerInstance.RejectMedia) api := r.Group("/api")