Create deploy token on site creation

This commit is contained in:
2026-04-03 10:21:29 +02:00
parent 78b84a33b8
commit 1aba69cfb5
6 changed files with 94 additions and 5 deletions
+17 -2
View File
@@ -6,6 +6,7 @@ import (
"log"
"quay/app/models"
"quay/app/repository"
"quay/internal/security"
"github.com/gofiber/fiber/v3"
)
@@ -145,7 +146,7 @@ func validateIncomingSite(site *models.Site) error {
// @Accept json
// @Produce json
// @Param site body models.Site true "Site details"
// @Success 200 {object} models.Site
// @Success 200 {object} models.CreateSiteResponse
// @Failure 400 {object} models.APIError
// @Failure 500 {object} models.APIError
// @Router /sites [post]
@@ -165,6 +166,17 @@ func (h *SiteHandler) PostSite(c fiber.Ctx) error {
})
}
rawDeployToken, hashedDeployToken, err := security.CreateDeployToken()
if err != nil {
log.Println("Error creating deploy token: ", err)
return c.Status(fiber.StatusInternalServerError).JSON(&models.APIError{
Message: "Unexpected error while creating deploy token: " + err.Error(),
})
}
site.DeployToken = hashedDeployToken
if err := h.Repo.CreateSite(&site); err != nil {
log.Println("Error creating site: ", err)
return c.Status(fiber.StatusInternalServerError).JSON(&models.APIError{
@@ -172,7 +184,10 @@ func (h *SiteHandler) PostSite(c fiber.Ctx) error {
})
}
return c.JSON(site)
return c.JSON(&models.CreateSiteResponse{
Site: site,
RawDeployToken: rawDeployToken,
})
}
// PutSite godoc
+5
View File
@@ -39,3 +39,8 @@ type GetAllSitesResponse struct {
Sites []Site `json:"sites"`
Total int `json:"total"`
}
type CreateSiteResponse struct {
Site Site `json:"site"`
RawDeployToken string `json:"raw_deploy_token"`
}