getUserForApproval($token); if ($user == NULL) { throw new Exception("UNKNOWN_TOKEN"); } $first_name = $user["first_name"]; $last_name = $user["last_name"]; $username = $user["username"]; // we have 2 cases: first and last name or just the username $call_name = strlen($first_name . $last_name) > 0 ? $first_name . " " . $last_name : $username; $note = $user["note"]; $email = $user["email"]; if ($action == RegisterState::RegistrationAccepted) { $mx_db->setRegistrationStateAdmin(RegisterState::PendingRegistration, $token); // register user require_once(__DIR__ . "/../MatrixConnection.php"); $mxConn = new MatrixConnection($config["homeserver"], $config["access_token"]); $password = NULL; $use_db_password = (isset($config["getPasswordOnRegistration"]) && $config["getPasswordOnRegistration"]); if ($use_db_password && isset($user["password"]) && strlen($user["password"]) > 0) { $password = $user["password"]; } else { $use_db_password = false; // generate a password with 10 characters $password = bin2hex(openssl_random_pseudo_bytes(5)); } switch ($config["operationMode"]) { case "synapse": // register with registration_shared_secret $res = $mxConn->register($username, $password, $config["registration_shared_secret"]); if (!$res) { // something went wrong while registering $password = NULL; } break; case "local": // register by adding a user to the local database $password = $mx_db->addUser($first_name, $last_name, $username, $password, $email); break; default: throw new Exception("Unknown operationMode"); } if ($password != NULL) { // send registration_success $res = send_mail_registration_success( $config["homeserver"], $call_name, $email, $username, // only send password when auto-created ($use_db_password ? NULL : $password), $config["howToURL"] ); if ($res) { $mx_db->setRegistrationStateAdmin(RegisterState::AllDone, $token); } else { $mx_db->setRegistrationStateAdmin(RegisterState::PendingSendRegistrationMail, $token); } } else { send_mail_registration_allowed_but_failed($config["homeserver"], $call_name, $email); $mxMsg = new MatrixMessage(); $mxMsg->set_type("m.text"); $mxMsg->set_body(strtr($language["REGISTRATION_FAILED_FOR"], [ "@name" => $call_name, ])); $mxConn->send($config["register_room"], $mxMsg); throw new Exception("REGISTRATION_FAILED"); } print("" . $language["ADMIN_VERIFY_SITE_TITLE"] . ""); print(""); print("

" . $language["ADMIN_VERIFY_SITE_TITLE"] . "

"); print("

" . $language["ADMIN_REGISTER_ACCEPTED_BODY"] . "

"); } elseif ($action == RegisterState::RegistrationDeclined) { $mx_db->setRegistrationStateAdmin(RegisterState::RegistrationDeclined, $token); send_mail_registration_decline( $config["homeserver"], $call_name, $email, $decline_reason ); print("" . $language["ADMIN_VERIFY_SITE_TITLE"] . ""); print(""); print("

" . $language["ADMIN_VERIFY_SITE_TITLE"] . "

"); print("

" . $language["ADMIN_REGISTER_DECLINED_BODY"] . "

"); } else { print("" . $language["ADMIN_VERIFY_SITE_TITLE"] . ""); ?>

" class="btn btn-info btn-block"> " class="btn btn-info btn-block">