feat(auth): Add login, register, session_info and api creation

This commit is contained in:
Björn Benouarets
2026-01-15 20:25:17 +01:00
commit 13d908420a
31 changed files with 1421 additions and 0 deletions

78
app/main.go Normal file
View File

@@ -0,0 +1,78 @@
package main
import (
"git.secnex.io/secnex/auth-api/cache"
"git.secnex.io/secnex/auth-api/config"
"git.secnex.io/secnex/auth-api/controllers"
"git.secnex.io/secnex/auth-api/database"
"git.secnex.io/secnex/auth-api/middlewares"
"git.secnex.io/secnex/auth-api/models"
"git.secnex.io/secnex/masterlog"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/cors"
)
func main() {
config := config.NewConfig()
pseudonymizer := masterlog.NewPseudonymizerFromString("1234567890")
masterlog.SetPseudonymizer(pseudonymizer)
masterlog.AddSensitiveFields("password", "token", "email")
if config.Debug {
masterlog.SetLevel(masterlog.LevelDebug)
} else {
masterlog.SetLevel(masterlog.LevelInfo)
}
// resetAdminApiKey := utils.GetEnvBool("RESET_ADMIN_API_KEY", false)
masterlog.AddEncoder(&masterlog.JSONEncoder{})
allModels := []interface{}{
&models.User{},
&models.Tenant{},
&models.Session{},
&models.ApiKey{},
}
dbConfig := database.NewDatabaseConfigurationFromConfig(config)
masterlog.Info("Connecting to database", map[string]interface{}{"host": config.DatabaseHost, "port": config.DatabasePort, "database": config.DatabaseName})
if err := dbConfig.Connect(config, allModels...); err != nil {
masterlog.Error("failed to connect to database", map[string]interface{}{"error": err.Error()})
return
}
masterlog.Info("Connected to database!")
masterlog.Info("Connecting to Redis", map[string]interface{}{"host": config.RedisHost, "port": config.RedisPort})
if err := cache.Connect(config); err != nil {
masterlog.Error("failed to connect to Redis", map[string]interface{}{"error": err.Error()})
return
}
masterlog.Info("Connected to Redis!")
app := fiber.New(fiber.Config{
DisableStartupMessage: !config.FiberShowStartupMessage,
})
app.Use(middlewares.RequestLogger())
app.Use(middlewares.AuthMiddleware())
app.Use(cors.New(cors.Config{
AllowOrigins: config.CorsAllowOrigins,
AllowHeaders: config.CorsAllowHeaders,
AllowMethods: config.CorsAllowMethods,
}))
// Controllers
app.Post("/login", controllers.LoginController)
app.Post("/register", controllers.RegisterController)
app.Get("/api_keys", controllers.CreateApiKeyController)
app.Post("/session/info", controllers.SessionInfoController)
masterlog.Info("Starting server", map[string]interface{}{"address": config.Address})
if err := app.Listen(config.Address); err != nil {
masterlog.Error("failed to start server", map[string]interface{}{"error": err.Error()})
return
}
}