| avatar = defaultAvatar // production mode | avatar = defaultAvatar // production mode | ||||
| } | } | ||||
| } | } | ||||
| if avatar == "" { // to prevent empty avatar in case of db error | |||||
| avatar = defaultAvatar | |||||
| } | |||||
| // Data is the base64 encoded image | // Data is the base64 encoded image | ||||
| // The actual image starts after the "," | // The actual image starts after the "," |
| ue := UserExtra{} | ue := UserExtra{} | ||||
| ue.Login = "" | ue.Login = "" | ||||
| ue.Enabled = false | |||||
| ue.License = "" | ue.License = "" | ||||
| ue.Organization = "" | ue.Organization = "" | ||||
| ue.BSB = "" | ue.BSB = "" | ||||
| ue := UserExtra{} | ue := UserExtra{} | ||||
| ue.Login = b.Login | ue.Login = b.Login | ||||
| ue.Enabled = b.Enabled | |||||
| ue.Role = "broker" | ue.Role = "broker" | ||||
| ue.License = b.License | ue.License = b.License | ||||
| ue.Organization = b.Organization | ue.Organization = b.Organization |
| p.First = input.First | p.First = input.First | ||||
| p.Last = input.Last | p.Last = input.Last | ||||
| p.Display = input.Display | p.Display = input.Display | ||||
| p.Enabled = input.Enabled | |||||
| if ss.GetRole() == "admin" { | if ss.GetRole() == "admin" { | ||||
| p.Title = input.Title | p.Title = input.Title | ||||
| u := loan.User{} | u := loan.User{} | ||||
| e := u.Read(id) | e := u.Read(id) | ||||
| ret.Login = u.Login | ret.Login = u.Login | ||||
| ret.Enabled = u.Enabled | |||||
| if e != nil { | if e != nil { | ||||
| log.Error("cannot find user by id", id) | log.Error("cannot find user by id", id) | ||||
| return | return | ||||
| } | } | ||||
| ret.Login = b.Login | ret.Login = b.Login | ||||
| ret.Enabled = b.Enabled | |||||
| ret.BSB = b.BSB | ret.BSB = b.BSB | ||||
| ret.ACC = b.ACC | ret.ACC = b.ACC | ||||
| ret.Organization = b.Organization | ret.Organization = b.Organization | ||||
| u := loan.User{} | u := loan.User{} | ||||
| e := u.Read(id) | e := u.Read(id) | ||||
| ret.Login = u.Login | ret.Login = u.Login | ||||
| ret.Enabled = u.Enabled | |||||
| if e != nil { | if e != nil { | ||||
| log.Error("cannot find admin by id", id) | log.Error("cannot find admin by id", id) |
| "encoding/json" | "encoding/json" | ||||
| "github.com/brianvoe/gofakeit/v6" | "github.com/brianvoe/gofakeit/v6" | ||||
| log "github.com/sirupsen/logrus" | log "github.com/sirupsen/logrus" | ||||
| "io/ioutil" | |||||
| "net/http" | "net/http" | ||||
| ) | ) | ||||
| type UserExtra struct { | type UserExtra struct { | ||||
| Enabled bool | |||||
| Login string | Login string | ||||
| BSB string | BSB string | ||||
| ACC string | ACC string | ||||
| ue := UserExtra{} | ue := UserExtra{} | ||||
| ue.Login = u.Login | ue.Login = u.Login | ||||
| ue.Enabled = u.Enabled | |||||
| ue.Role = "user" | ue.Role = "user" | ||||
| ue.License = "" | ue.License = "" | ||||
| ue.Organization = "" | ue.Organization = "" | ||||
| ue := UserExtra{} | ue := UserExtra{} | ||||
| ue.Login = "" | ue.Login = "" | ||||
| ue.Enabled = false | |||||
| ue.Role = "people" | ue.Role = "people" | ||||
| ue.License = "" | ue.License = "" | ||||
| ue.Organization = "" | ue.Organization = "" | ||||
| return | return | ||||
| } | } | ||||
| u.Enabled = input.Enabled | |||||
| u.Login = input.Login | u.Login = input.Login | ||||
| e = u.Write() | e = u.Write() | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| func apiV1UserEnable(w http.ResponseWriter, r *http.Request, ss *loan.Session) { | |||||
| id := r.URL.Path[len(apiV1Prefix+"user-enable/"):] //remove prefix | |||||
| p := loan.People{} | |||||
| body, e := ioutil.ReadAll(r.Body) | |||||
| if e != nil { | |||||
| log.Error("invalid request body for enable/disable people ", id, " err= ", e.Error()) | |||||
| apiV1Client403Error(w, r, ss) | |||||
| return | |||||
| } | |||||
| e = p.Read(id) | |||||
| if e != nil { | |||||
| log.Error("failed to read user by id ", id, e.Error()) | |||||
| apiV1Client403Error(w, r, ss) | |||||
| return | |||||
| } | |||||
| p.Enabled = string(body) == "true" | |||||
| if id == "0" { | |||||
| p.Enabled = true | |||||
| } // can not disable default admin | |||||
| e = p.Write() | |||||
| if e != nil { | |||||
| log.Error("failed to enable user ", id, e.Error()) | |||||
| apiV1Client403Error(w, r, ss) | |||||
| return | |||||
| } | |||||
| apiV1SendJson(p.Enabled, w, r, ss) | |||||
| } |
| func getUserExtraForLogin(u loan.User, ss *loan.Session) (ret UserExtra) { | func getUserExtraForLogin(u loan.User, ss *loan.Session) (ret UserExtra) { | ||||
| if ss.GetRole() == "user" { | if ss.GetRole() == "user" { | ||||
| ret = UserExtra{ | ret = UserExtra{ | ||||
| Enabled: true, | |||||
| Login: u.Login, | Login: u.Login, | ||||
| BSB: "", | BSB: "", | ||||
| ACC: "", | ACC: "", | ||||
| log.Error("fail to retrieve broker for session ", ss, e.Error()) | log.Error("fail to retrieve broker for session ", ss, e.Error()) | ||||
| } else { | } else { | ||||
| ret = UserExtra{ | ret = UserExtra{ | ||||
| Enabled: broker.Enabled, | |||||
| Login: broker.Login, | Login: broker.Login, | ||||
| BSB: broker.BSB, | BSB: broker.BSB, | ||||
| ACC: broker.ACC, | ACC: broker.ACC, | ||||
| if ss.GetRole() == "admin" { | if ss.GetRole() == "admin" { | ||||
| ret = UserExtra{ | ret = UserExtra{ | ||||
| Enabled: true, | |||||
| Login: u.Login, | Login: u.Login, | ||||
| BSB: "", | BSB: "", | ||||
| ACC: "", | ACC: "", |
| {"POST", "user/", apiV1UserPost}, | {"POST", "user/", apiV1UserPost}, | ||||
| {"PUT", "user/", apiV1UserPut}, | {"PUT", "user/", apiV1UserPut}, | ||||
| {"DELETE", "user/", apiV1UserDelete}, | {"DELETE", "user/", apiV1UserDelete}, | ||||
| {"POST", "user-enable/", apiV1UserEnable}, | |||||
| {"GET", "broker/", apiV1BrokerGet}, | {"GET", "broker/", apiV1BrokerGet}, | ||||
| {"POST", "broker/", apiV1BrokerPost}, | {"POST", "broker/", apiV1BrokerPost}, | ||||
| {"POST", "user/", apiV1UserPost}, | {"POST", "user/", apiV1UserPost}, | ||||
| {"PUT", "user/", apiV1UserPut}, | {"PUT", "user/", apiV1UserPut}, | ||||
| {"DELETE", "user/", apiV1UserDelete}, | {"DELETE", "user/", apiV1UserDelete}, | ||||
| {"POST", "user-enable/", apiV1UserEnable}, | |||||
| {"GET", "broker/", apiV1BrokerGet}, | {"GET", "broker/", apiV1BrokerGet}, | ||||
| {"POST", "broker/", apiV1BrokerPost}, | {"POST", "broker/", apiV1BrokerPost}, |