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
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,
}
}

View File

@@ -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

View File

@@ -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")