package main import ( "biukop.com/sfm/loan" "encoding/json" "github.com/brianvoe/gofakeit/v6" log "github.com/sirupsen/logrus" "net/http" ) type UserExtra struct { Enabled bool Login string BSB string ACC string License string Organization string Role string } func decodeJsonUserExtra(r *http.Request) (ret UserExtra, e error) { decoder := json.NewDecoder(r.Body) //decoder.DisallowUnknownFields() e = decoder.Decode(&ret) if e != nil { log.Error("failed decoding PayIn for updating", e.Error()) return } return } // create a new user from people func apiV1UserPut(w http.ResponseWriter, r *http.Request, ss *loan.Session) { id := r.URL.Path[len(apiV1Prefix+"user/"):] //remove prefix p := loan.People{} e := p.Read(id) if e != nil { // no such people log.Error("cannot create User without people, id=", id, e.Error()) apiV1Client403Error(w, r, ss) return } u := loan.User{} u.Id = id u.Login = id + "@local" u.Enabled = false u.Token = gofakeit.LetterN(45) u.SetPass("") e = u.Write() if e != nil { log.Error("Failed to upgrade user ", id) apiV1Server500Error(w, r) return } ue := UserExtra{} ue.Login = u.Login ue.Enabled = u.Enabled ue.Role = "user" ue.License = "" ue.Organization = "" ue.BSB = "" ue.ACC = "" apiV1SendJson(ue, w, r, ss) } func apiV1UserDelete(w http.ResponseWriter, r *http.Request, ss *loan.Session) { id := r.URL.Path[len(apiV1Prefix+"user/"):] //remove prefix if id == "" { apiV1Client403Error(w, r, ss) return } e := loan.DeleteUser(id) if e != nil { log.Error("Failed to delete user ", id) apiV1Server500Error(w, r) return } ue := UserExtra{} ue.Login = "" ue.Enabled = false ue.Role = "people" ue.License = "" ue.Organization = "" ue.BSB = "" ue.ACC = "" apiV1SendJson(ue, w, r, ss) } func apiV1UserPost(w http.ResponseWriter, r *http.Request, ss *loan.Session) { id := r.URL.Path[len(apiV1Prefix+"user/"):] //remove prefix input, e := decodeJsonUserExtra(r) log.Println(input) if e != nil { apiV1Client404Error(w, r, ss) return } else { u := loan.User{} e = u.Read(id) if e != nil { log.Error("cannot save basic loan", e.Error()) apiV1SendJson(" [ Error Occurred ] : "+e.Error(), w, r, ss) return } u.Enabled = input.Enabled u.Login = input.Login e = u.Write() if e != nil { log.Error("cannot save basic loan", e.Error()) apiV1SendJson(" [ Error Occurred ] : "+e.Error(), w, r, ss) } else { apiV1SendJson(input, w, r, ss) } } }