package host import ( "net/http" "strings" "github.com/jinzhu/gorm" "goji.io" "goji.io/pat" "golang.org/x/net/context" libapi "dev.sum7.eu/sum7/warehost/lib/api" liblog "dev.sum7.eu/sum7/warehost/lib/log" system "dev.sum7.eu/sum7/warehost/system" ) //MODULNAME to get global name for the modul const MODULNAME = "host" var dbconnection *gorm.DB var log *liblog.ModulLog // BindAPI sets the routes to the api functions func BindAPI(db *gorm.DB, router *goji.Mux, prefix string) { dbconnection = db log = liblog.NewModulLog(MODULNAME) router.HandleFuncC(pat.Post(prefix+"/signup"), libapi.SessionHandler(system.LoginHandler(signup))) router.HandleFuncC(pat.Delete(prefix+"/delete"), libapi.SessionHandler(system.LoginHandler(ProfilHandler(delete)))) } func signup(ctx context.Context, w http.ResponseWriter, r *http.Request) (returndata interface{}, returnerr *libapi.ErrorResult) { login := ctx.Value("login").(*system.Login) returndata = false logger := log.GetLog(r, "signup") run := login.Superadmin if !run { var profil Profil dbconnection.Joins("LEFT JOIN invite invite ON invite.login=host_profil.login").Where("invite.invited=?", login.ID).Find(&profil) run = profil.Reseller } if run { profil := &Profil{LoginID: login.ID} if err := dbconnection.Create(profil).Error; err != nil { if strings.Contains(err.Error(), "duplicate key") { returndata = false logger.Warning("exists already") return } else { logger.Error("database: during create host profil: ", err) returnerr = &libapi.ErrorResult{Message: "Internal Database Error"} w.WriteHeader(http.StatusInternalServerError) return } } returndata = true logger.Info("done") return } w.WriteHeader(http.StatusUnauthorized) logger.Info("not allowed") return } func delete(ctx context.Context, w http.ResponseWriter, r *http.Request) (returndata interface{}, returnerr *libapi.ErrorResult) { profil := ctx.Value("profil").(*Profil) returndata = true dbconnection.Unscoped().Delete(profil) return }