Project import generated by Copybara.

GitOrigin-RevId: 63746295f1a5ab5a619056791995793d65529e62
diff --git a/src/doedituser.php b/src/doedituser.php
new file mode 100644
index 0000000..bf62372
--- /dev/null
+++ b/src/doedituser.php
@@ -0,0 +1,43 @@
+<?php
+require_once("core.php");
+security::checkType(security::ADMIN);
+
+if (!security::checkParams("POST", [
+  ["id", security::PARAM_NEMPTY],
+  ["username", security::PARAM_NEMPTY],
+  ["name", security::PARAM_NEMPTY],
+  ["dni", security::PARAM_ISSET],
+  ["email", security::PARAM_ISEMAILOREMPTY],
+  ["category", security::PARAM_NEMPTY],
+  ["type", security::PARAM_ISSET]
+])) {
+  security::go("users.php?msg=empty");
+}
+
+$id = (int)$_POST["id"];
+$username = $_POST["username"];
+$name = $_POST["name"];
+$dni = $_POST["dni"];
+$email = $_POST["email"];
+$category = (int)$_POST["category"];
+$type = (int)$_POST["type"];
+
+$p = people::get($id);
+if ($p === false) security::go("users.php?msg=unexpected");
+
+if (!security::isAllowed($type) || !security::isAllowed($p["type"]) || !categories::exists($category) || !security::existsType($type)) security::go("users.php?msg=unexpected");
+
+if (people::edit($id, $username, $name, $dni, $email, $category, $type)) {
+  if (security::checkParams("POST", [["password", security::PARAM_NEMPTY]])) {
+    if (!security::passwordIsGoodEnough($_POST["password"])) security::go("users.php?msg=weakpassword");
+
+    $password_hash = password_hash($_POST["password"], PASSWORD_DEFAULT);
+    if (!people::updatePassword($id, $password_hash)) {
+      security::go("users.php?msg=couldntupdatepassword");
+    }
+  }
+} else {
+  security::go("users.php?msg=unexpected");
+}
+
+security::go("users.php?msg=modified");