// ResetPassword handles request from the reset page and reset password func (cc *CommonController) ResetPassword() { resetUUID := cc.GetString("reset_uuid") if resetUUID == "" { cc.CustomAbort(http.StatusBadRequest, "Reset uuid is blank.") } queryUser := models.User{ResetUUID: resetUUID} user, err := dao.GetUser(queryUser) if err != nil { log.Errorf("Error occurred in GetUser: %v", err) cc.CustomAbort(http.StatusInternalServerError, "Internal error.") } if user == nil { log.Error("User does not exist") cc.CustomAbort(http.StatusBadRequest, "User does not exist") } password := cc.GetString("password") if password != "" { user.Password = password err = dao.ResetUserPassword(*user) if err != nil { log.Errorf("Error occurred in ResetUserPassword: %v", err) cc.CustomAbort(http.StatusInternalServerError, "Internal error.") } } else { cc.CustomAbort(http.StatusBadRequest, "password_is_required") } }
func main() { beego.BConfig.WebConfig.Session.SessionOn = true dao.InitDB() if err := updateInitPassword(adminUserID, os.Getenv("HARBOR_ADMIN_PASSWORD")); err != nil { log.Error(err) } initRouters() beego.Run() }
// ChangePassword handles PUT to /api/users/{}/password func (ua *UserAPI) ChangePassword() { ldapAdminUser := (ua.AuthMode == "ldap_auth" && ua.userID == 1 && ua.userID == ua.currentUserID) if !(ua.AuthMode == "db_auth" || ldapAdminUser) { ua.CustomAbort(http.StatusForbidden, "") } if !ua.IsAdmin { if ua.userID != ua.currentUserID { log.Error("Guests can only change their own account.") ua.CustomAbort(http.StatusForbidden, "Guests can only change their own account.") } } var req passwordReq ua.DecodeJSONReq(&req) if req.OldPassword == "" { log.Error("Old password is blank") ua.CustomAbort(http.StatusBadRequest, "Old password is blank") } queryUser := models.User{UserID: ua.userID, Password: req.OldPassword} user, err := dao.CheckUserPassword(queryUser) if err != nil { log.Errorf("Error occurred in CheckUserPassword: %v", err) ua.CustomAbort(http.StatusInternalServerError, "Internal error.") } if user == nil { log.Warning("Password input is not correct") ua.CustomAbort(http.StatusForbidden, "old_password_is_not_correct") } if req.NewPassword == "" { ua.CustomAbort(http.StatusBadRequest, "please_input_new_password") } updateUser := models.User{UserID: ua.userID, Password: req.NewPassword, Salt: user.Salt} err = dao.ChangeUserPassword(updateUser, req.OldPassword) if err != nil { log.Errorf("Error occurred in ChangeUserPassword: %v", err) ua.CustomAbort(http.StatusInternalServerError, "Internal error.") } }
// Get checks if reset_uuid in the reset link is valid and render the result page for user to reset password. func (rpc *ResetPasswordController) Get() { resetUUID := rpc.GetString("reset_uuid") if resetUUID == "" { log.Error("Reset uuid is blank.") rpc.Redirect("/", http.StatusFound) return } queryUser := models.User{ResetUUID: resetUUID} user, err := dao.GetUser(queryUser) if err != nil { log.Errorf("Error occurred in GetUser: %v", err) rpc.CustomAbort(http.StatusInternalServerError, "Internal error.") } if user != nil { rpc.Data["ResetUuid"] = user.ResetUUID rpc.Forward("page_title_reset_password", "reset-password.htm") } else { rpc.Redirect("/", http.StatusFound) } }
func clearUp(username string) { var err error o := orm.NewOrm() o.Begin() err = execUpdate(o, `delete pm from project_member pm join user u on pm.user_id = u.user_id where u.username = ?`, username) if err != nil { o.Rollback() log.Error(err) } err = execUpdate(o, `delete pm from project_member pm join project p on pm.project_id = p.project_id where p.name = ?`, projectName) if err != nil { o.Rollback() log.Error(err) } err = execUpdate(o, `delete al from access_log al join user u on al.user_id = u.user_id where u.username = ?`, username) if err != nil { o.Rollback() log.Error(err) } err = execUpdate(o, `delete al from access_log al join project p on al.project_id = p.project_id where p.name = ?`, projectName) if err != nil { o.Rollback() log.Error(err) } err = execUpdate(o, `delete from project where name = ?`, projectName) if err != nil { o.Rollback() log.Error(err) } err = execUpdate(o, `delete from user where username = ?`, username) if err != nil { o.Rollback() log.Error(err) } err = execUpdate(o, `delete from replication_job where id < 99`) if err != nil { log.Error(err) } err = execUpdate(o, `delete from replication_policy where id < 99`) if err != nil { log.Error(err) } err = execUpdate(o, `delete from replication_target where id < 99`) if err != nil { log.Error(err) } o.Commit() }