init: Initial commit

This commit is contained in:
Björn Benouarets
2026-01-21 06:35:35 +01:00
commit e13859a3ac
30 changed files with 1224 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
package services
import (
"net/http"
"time"
"git.secnex.io/secnex/masterlog"
"git.secnex.io/secnex/mgmt-api/models"
"git.secnex.io/secnex/mgmt-api/repositories"
"git.secnex.io/secnex/mgmt-api/utils"
"github.com/gofiber/fiber/v2"
"github.com/google/uuid"
)
func CreateNewApplication(name string, tenantID string, expiresAt *time.Time) *utils.HTTPResponse {
tenant, err := repositories.GetTenantByID(tenantID)
if err != nil {
masterlog.Error("Failed to get tenant", map[string]interface{}{"error": err.Error()})
return utils.NewHTTPResponse(http.StatusInternalServerError, &fiber.Map{"message": "Failed to get tenant"}, "", nil, nil)
}
if tenant == nil {
return utils.NewHTTPResponse(http.StatusNotFound, &fiber.Map{"message": "Tenant not found"}, "", nil, nil)
}
applicationID := uuid.New()
applicationSecret := utils.GenerateRandomString(32)
application := &models.Application{
Name: name,
TenantID: tenant.ID,
ExpiresAt: expiresAt,
Secret: applicationSecret,
ID: applicationID,
}
if err := repositories.CreateApplication(application); err != nil {
masterlog.Error("Failed to create application", map[string]interface{}{"error": err.Error()})
if utils.IsDuplicateKeyError(err) {
return utils.NewHTTPResponse(http.StatusBadRequest, &fiber.Map{"message": "Application already exists"}, "", nil, nil)
}
return utils.NewHTTPResponse(http.StatusInternalServerError, &fiber.Map{"message": "Failed to create application"}, "", nil, nil)
}
return utils.NewHTTPResponse(http.StatusOK, &fiber.Map{"message": "Application created", "id": applicationID, "secret": applicationSecret}, "", nil, nil)
}