Refactor JWT auth and remove DB dependency from config
This commit is contained in:
@@ -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,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
|
||||||
|
@@ -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")
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user