Refactor JWT auth and remove DB dependency from config

This commit is contained in:
2025-05-17 20:28:18 +03:30
parent f9d896bf72
commit 81adfa1ad9
3 changed files with 21 additions and 29 deletions

View File

@@ -1,6 +1,7 @@
package auth package auth
import ( import (
"CatsOfMastodonBotGo/internal/config"
"strings" "strings"
"time" "time"
@@ -14,11 +15,13 @@ type JwtTokenGenerator struct {
Audience string Audience string
} }
func NewJwtTokenGenerator(key string, issuer string, audience string) *JwtTokenGenerator { var JwtTokenGeneratorInstance *JwtTokenGenerator
return &JwtTokenGenerator{
Key: key, func InitJwtTokenGenerator() {
Issuer: issuer, JwtTokenGeneratorInstance = &JwtTokenGenerator{
Audience: audience, Key: config.Config.JwtSecret,
Issuer: config.Config.JwtIssuer,
Audience: config.Config.JwtAudience,
} }
} }

View File

@@ -2,21 +2,19 @@ package config
import ( import (
//"CatsOfMastodonBotGo/internal/auth" //"CatsOfMastodonBotGo/internal/auth"
"CatsOfMastodonBotGo/internal/database"
//"CatsOfMastodonBotGo/internal/services" //"CatsOfMastodonBotGo/internal/services"
"log" "log"
"os" "os"
"gorm.io/gorm"
) )
type config struct { type config struct {
Db *gorm.DB
// PostService *services.PostService
// Jwt *auth.JwtTokenGenerator
AdminPassword string AdminPassword string
Instance string Instance string
Tag string Tag string
JwtSecret string
JwtIssuer string
JwtAudience string
} }
var Config *config var Config *config
@@ -55,26 +53,16 @@ func Load() *config {
audience = "CatsOfMastodonBotGo" 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 // Inititlize AppContext
var appContext = &config{ var appContext = &config{
Db: db,
// PostService: postService,
// Jwt: jwt,
AdminPassword: adminPassword, AdminPassword: adminPassword,
Instance: instance, Instance: instance,
Tag: tag, Tag: tag,
JwtSecret: secret,
JwtIssuer: issuer,
JwtAudience: audience,
} }
return appContext return appContext

View File

@@ -1,7 +1,7 @@
package server package server
import ( import (
"CatsOfMastodonBotGo/internal" "CatsOfMastodonBotGo/internal/auth"
"CatsOfMastodonBotGo/internal/web/handlers" "CatsOfMastodonBotGo/internal/web/handlers"
"github.com/gin-contrib/cors" "github.com/gin-contrib/cors"
@@ -20,14 +20,15 @@ func SetupRouter() *gin.Engine {
handlers.InitAdminDashboardHandler() handlers.InitAdminDashboardHandler()
handlers.InitApiEndpointHandler() handlers.InitApiEndpointHandler()
auth.InitJwtTokenGenerator()
admin := r.Group("/admin") admin := r.Group("/admin")
// My man, this is done way more efficient and fast in .NET, specially the authentication part // My man, this is done way more efficient and fast in .NET, specially the authentication part
admin.POST("/login", handlers.AdminDashboardHandlerInstance.Login) admin.POST("/login", handlers.AdminDashboardHandlerInstance.Login)
admin.GET("/getmedia", appContext.Jwt.GinMiddleware(), handlers.AdminDashboardHandlerInstance.GetMedia) admin.GET("/getmedia", auth.JwtTokenGeneratorInstance.GinMiddleware(), handlers.AdminDashboardHandlerInstance.GetMedia)
admin.POST("/approve", appContext.Jwt.GinMiddleware(), handlers.AdminDashboardHandlerInstance.ApproveMedia) admin.POST("/approve", auth.JwtTokenGeneratorInstance.GinMiddleware(), handlers.AdminDashboardHandlerInstance.ApproveMedia)
admin.POST("/reject", appContext.Jwt.GinMiddleware(), handlers.AdminDashboardHandlerInstance.RejectMedia) admin.POST("/reject", auth.JwtTokenGeneratorInstance.GinMiddleware(), handlers.AdminDashboardHandlerInstance.RejectMedia)
api := r.Group("/api") api := r.Group("/api")