mirror of
https://github.com/phishingclub/phishingclub.git
synced 2026-02-12 16:12:44 +00:00
48 lines
1.1 KiB
Go
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)
|
|
}
|