func (l *LoginController) PrepareDefaultUser() (err error) { username := colonycore.GetConfig("default_username", "").(string) password := colonycore.GetConfig("default_password", "").(string) user := new(acl.User) filter := dbox.Contains("loginid", username) c, err := acl.Find(user, filter, nil) if err != nil { return } if c.Count() == 0 { user.ID = toolkit.RandomString(32) user.LoginID = username user.FullName = username user.Password = password user.Enable = true err = acl.Save(user) if err != nil { return } err = acl.ChangePassword(user.ID, password) if err != nil { return } fmt.Printf(`Default user "%s" with standard password has been created%s`, username, "\n") } return }
func (l *LoginController) SavePassword(r *knot.WebContext) interface{} { r.Config.OutputType = knot.OutputJson payload := toolkit.M{} err := r.GetPayload(&payload) if err != nil { return helper.CreateResult(false, nil, err.Error()) } if !payload.Has("newpassword") || !payload.Has("userid") { return helper.CreateResult(false, nil, "Data is not complete") } switch { case payload.Has("tokenid"): err = acl.ChangePasswordToken(toolkit.ToString(payload["userid"]), toolkit.ToString(payload["newpassword"]), toolkit.ToString(payload["tokenid"])) default: // check sessionid first savedsessionid := "" //change with get session //======================= userid, err := acl.FindUserBySessionID(savedsessionid) if err == nil && userid == toolkit.ToString(payload["userid"]) { err = acl.ChangePassword(toolkit.ToString(payload["userid"]), toolkit.ToString(payload["newpassword"])) } else if err == nil { err = errors.New("Userid is not match") } } return helper.CreateResult(true, nil, "save password success") }
func (a *UserController) ChangePass(r *knot.WebContext) interface{} { r.Config.OutputType = knot.OutputJson a.InitialSetDatabase() payload := map[string]interface{}{} err := r.GetPayload(&payload) if err != nil { return helper.CreateResult(false, nil, err.Error()) } user := payload["user"].(map[string]interface{}) err = acl.ChangePassword(user["_id"].(string), payload["pass"].(string)) if err != nil { return helper.CreateResult(true, nil, err.Error()) } return helper.CreateResult(true, nil, "sukses") }
func (a *UserController) SaveUser(r *knot.WebContext) interface{} { r.Config.OutputType = knot.OutputJson a.InitialSetDatabase() payload := map[string]interface{}{} err := r.GetPayload(&payload) if err != nil { return helper.CreateResult(false, nil, err.Error()) } user := payload["user"].(map[string]interface{}) groups := user["Groups"] var group []string for _, v := range groups.([]interface{}) { group = append(group, v.(string)) } fmt.Println(user["_id"].(string)) initUser := new(acl.User) id := toolkit.RandomString(32) if user["_id"].(string) == "" { initUser.ID = id } else { initUser.ID = user["_id"].(string) } initUser.LoginID = user["LoginID"].(string) initUser.FullName = user["FullName"].(string) initUser.Email = user["Email"].(string) initUser.Password = user["Password"].(string) initUser.Enable = user["Enable"].(bool) initUser.Groups = group err = acl.Save(initUser) if err != nil { return helper.CreateResult(true, nil, err.Error()) } if user["_id"].(string) == "" { err = acl.ChangePassword(initUser.ID, user["Password"].(string)) if err != nil { return helper.CreateResult(true, nil, err.Error()) } } var grant map[string]interface{} for _, p := range payload["grants"].([]interface{}) { dat := []byte(p.(string)) if err = json.Unmarshal(dat, &grant); err != nil { return helper.CreateResult(true, nil, err.Error()) } AccessID := grant["AccessID"].(string) Accessvalue := grant["AccessValue"] for _, v := range Accessvalue.([]interface{}) { switch v { case "AccessCreate": initUser.Grant(AccessID, acl.AccessCreate) case "AccessRead": initUser.Grant(AccessID, acl.AccessRead) case "AccessUpdate": initUser.Grant(AccessID, acl.AccessUpdate) case "AccessDelete": initUser.Grant(AccessID, acl.AccessDelete) case "AccessSpecial1": initUser.Grant(AccessID, acl.AccessSpecial1) case "AccessSpecial2": initUser.Grant(AccessID, acl.AccessSpecial2) case "AccessSpecial3": initUser.Grant(AccessID, acl.AccessSpecial3) case "AccessSpecial4": initUser.Grant(AccessID, acl.AccessSpecial4) } } } err = acl.Save(initUser) return helper.CreateResult(true, nil, "sukses") }