vw_small

Hardened fork of Vaultwarden (https://github.com/dani-garcia/vaultwarden) with fewer features.
git clone https://git.philomathiclife.com/repos/vw_small
Log | Files | Refs | README

commit 2f4a9865e175e3ce05d724b4b8ea1588cac80749
parent 0a3008e7538c1a29b8b5a6439004e89465fce391
Author: Daniel GarcĂ­a <dani-garcia@users.noreply.github.com>
Date:   Sat, 22 Feb 2020 17:49:33 +0100

Use absolute paths in the admin page

Diffstat:
Msrc/api/admin.rs | 4+++-
Msrc/static/templates/admin/base.hbs | 14+++++++-------
Msrc/static/templates/admin/page.hbs | 20++++++++++----------
3 files changed, 20 insertions(+), 18 deletions(-)

diff --git a/src/api/admin.rs b/src/api/admin.rs @@ -60,7 +60,7 @@ fn admin_path() -> String { fn admin_login(flash: Option<FlashMessage>) -> ApiResult<Html<String>> { // If there is an error, show it let msg = flash.map(|msg| format!("{}: {}", msg.name(), msg.msg())); - let json = json!({"page_content": "admin/login", "version": VERSION, "error": msg}); + let json = json!({"page_content": "admin/login", "version": VERSION, "error": msg, "urlpath": CONFIG.domain_path()}); // Return the page let text = CONFIG.render_template(BASE_TEMPLATE, &json)?; @@ -115,6 +115,7 @@ struct AdminTemplateData { config: Value, can_backup: bool, logged_in: bool, + urlpath: String, } impl AdminTemplateData { @@ -126,6 +127,7 @@ impl AdminTemplateData { config: CONFIG.prepare_json(), can_backup: *CAN_BACKUP, logged_in: true, + urlpath: CONFIG.domain_path(), } } diff --git a/src/static/templates/admin/base.hbs b/src/static/templates/admin/base.hbs @@ -6,10 +6,10 @@ <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <title>Bitwarden_rs Admin Panel</title> - <link rel="stylesheet" href="bwrs_static/bootstrap.css" /> - <script src="bwrs_static/bootstrap-native-v4.js"></script> - <script src="bwrs_static/md5.js"></script> - <script src="bwrs_static/identicon.js"></script> + <link rel="stylesheet" href="{{urlpath}}/bwrs_static/bootstrap.css" /> + <script src="{{urlpath}}/bwrs_static/bootstrap-native-v4.js"></script> + <script src="{{urlpath}}/bwrs_static/md5.js"></script> + <script src="{{urlpath}}/bwrs_static/identicon.js"></script> <style> body { padding-top: 70px; @@ -38,10 +38,10 @@ <div class="navbar-collapse"> <ul class="navbar-nav"> <li class="nav-item active"> - <a class="nav-link" href="admin">Admin Panel</a> + <a class="nav-link" href="{{urlpath}}/admin">Admin Panel</a> </li> <li class="nav-item"> - <a class="nav-link" href=".">Vault</a> + <a class="nav-link" href="{{urlpath}}/">Vault</a> </li> </ul> </div> @@ -55,7 +55,7 @@ {{#if logged_in}} <li class="nav-item"> - <a class="nav-link" href="admin/logout">Log Out</a> + <a class="nav-link" href="{{urlpath}}/admin/logout">Log Out</a> </li> {{/if}} </ul> diff --git a/src/static/templates/admin/page.hbs b/src/static/templates/admin/page.hbs @@ -1,6 +1,6 @@ <main class="container"> <div id="users-block" class="my-3 p-3 bg-white rounded shadow"> - <h6 class="border-bottom pb-2 mb-0">Registered Users</h6> + <h6 class="border-bottom pb-2 mb-0">Registered Users {{urlpath}}</h6> <div id="users-list"> {{#each users}} @@ -19,7 +19,7 @@ <span class="d-block">{{Email}}</span> </div> <div class="col"> - <strong> Organizations:</strong> + <strong> Organizations: </strong> <span class="d-block"> {{#each Organizations}} <span class="badge badge-primary" data-orgtype="{{Type}}">{{Name}}</span> @@ -225,7 +225,7 @@ var input_mail = prompt("To delete user '" + mail + "', please type the email below") if (input_mail != null) { if (input_mail == mail) { - _post("admin/users/" + id + "/delete", + _post("{{urlpath}}/admin/users/" + id + "/delete", "User deleted correctly", "Error deleting user"); } else { @@ -235,19 +235,19 @@ return false; } function remove2fa(id) { - _post("admin/users/" + id + "/remove-2fa", + _post("{{urlpath}}/admin/users/" + id + "/remove-2fa", "2FA removed correctly", "Error removing 2FA"); return false; } function deauthUser(id) { - _post("admin/users/" + id + "/deauth", + _post("{{urlpath}}/admin/users/" + id + "/deauth", "Sessions deauthorized correctly", "Error deauthorizing sessions"); return false; } function updateRevisions() { - _post("admin/users/update_revision", + _post("{{urlpath}}/admin/users/update_revision", "Success, clients will sync next time they connect", "Error forcing clients to sync"); return false; @@ -256,7 +256,7 @@ inv = document.getElementById("email-invite"); data = JSON.stringify({ "email": inv.value }); inv.value = ""; - _post("admin/invite/", "User invited correctly", + _post("{{urlpath}}/admin/invite/", "User invited correctly", "Error inviting user", data); return false; } @@ -278,7 +278,7 @@ } function saveConfig() { data = JSON.stringify(getFormData()); - _post("admin/config/", "Config saved correctly", + _post("{{urlpath}}/admin/config/", "Config saved correctly", "Error saving config", data); return false; } @@ -286,7 +286,7 @@ var input = prompt("This will remove all user configurations, and restore the defaults and the " + "values set by the environment. This operation could be dangerous. Type 'DELETE' to proceed:"); if (input === "DELETE") { - _post("admin/config/delete", + _post("{{urlpath}}/admin/config/delete", "Config deleted correctly", "Error deleting config"); } else { @@ -296,7 +296,7 @@ return false; } function backupDatabase() { - _post("admin/config/backup_db", + _post("{{urlpath}}/admin/config/backup_db", "Backup created successfully", "Error creating backup"); return false;