Files
phishingclub/backend/controller/import.go
2025-08-21 16:14:09 +02:00

48 lines
1.1 KiB
Go

package controller
import (
"github.com/gin-gonic/gin"
"github.com/google/uuid"
"github.com/phishingclub/phishingclub/service"
)
// Import handles import for templates like emails, landing pages and so on
type Import struct {
Common
ImportService *service.Import
}
// Import imports a .zip file
func (im *Import) Import(g *gin.Context) {
session, _, ok := im.handleSession(g)
if !ok {
return
}
// parse request
f, err := g.FormFile("file")
// handle responses
if ok := im.handleErrors(g, err); !ok {
return
}
// Read forCompany flag from form (treat "1" or "true" as true)
forCompany := false
if v := g.PostForm("forCompany"); v == "1" || v == "true" {
forCompany = true
}
// Read companyID from form data if provided
var companyID *uuid.UUID
if companyIDStr := g.PostForm("companyID"); companyIDStr != "" {
if cid, err := uuid.Parse(companyIDStr); err == nil {
companyID = &cid
}
}
summary, err := im.ImportService.Import(g, session, f, forCompany, companyID)
if ok := im.handleErrors(g, err); !ok {
return
}
im.Response.OK(g, summary)
}