Browse Source

fix: Permit admin page on subpaths

pull/2713/head
GeekCorner 3 years ago
committed by GitHub
parent
commit
3cd3bcc89b
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 22
      src/static/templates/admin/base.hbs
  2. 2
      src/static/templates/admin/diagnostics.hbs
  3. 8
      src/static/templates/admin/organizations.hbs
  4. 8
      src/static/templates/admin/settings.hbs
  5. 22
      src/static/templates/admin/users.hbs

22
src/static/templates/admin/base.hbs

@ -4,9 +4,9 @@
<meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" /> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<meta name="robots" content="noindex,nofollow" /> <meta name="robots" content="noindex,nofollow" />
<link rel="icon" type="image/png" href="{{urlpath}}/vw_static/vaultwarden-icon.png"> <link rel="icon" type="image/png" href="../vw_static/vaultwarden-icon.png">
<title>Vaultwarden Admin Panel</title> <title>Vaultwarden Admin Panel</title>
<link rel="stylesheet" href="{{urlpath}}/vw_static/bootstrap.css" /> <link rel="stylesheet" href="../vw_static/bootstrap.css" />
<style> <style>
body { body {
padding-top: 75px; padding-top: 75px;
@ -21,7 +21,7 @@
margin: -5px 0 0 0; margin: -5px 0 0 0;
} }
</style> </style>
<script src="{{urlpath}}/vw_static/identicon.js"></script> <script src="/vw_static/identicon.js"></script>
<script> <script>
'use strict'; 'use strict';
@ -85,7 +85,7 @@
<body class="bg-light"> <body class="bg-light">
<nav class="navbar navbar-expand-md navbar-dark bg-dark mb-4 shadow fixed-top"> <nav class="navbar navbar-expand-md navbar-dark bg-dark mb-4 shadow fixed-top">
<div class="container-xl"> <div class="container-xl">
<a class="navbar-brand" href="{{urlpath}}/admin"><img class="vaultwarden-icon" src="{{urlpath}}/vw_static/vaultwarden-icon.png" alt="V">aultwarden Admin</a> <a class="navbar-brand" href="../admin"><img class="vaultwarden-icon" src="../vw_static/vaultwarden-icon.png" alt="V">aultwarden Admin</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse"
aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation"> aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span> <span class="navbar-toggler-icon"></span>
@ -94,25 +94,25 @@
<ul class="navbar-nav me-auto"> <ul class="navbar-nav me-auto">
{{#if logged_in}} {{#if logged_in}}
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="{{urlpath}}/admin">Settings</a> <a class="nav-link" href="../admin">Settings</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="{{urlpath}}/admin/users/overview">Users</a> <a class="nav-link" href="../admin/users/overview">Users</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="{{urlpath}}/admin/organizations/overview">Organizations</a> <a class="nav-link" href="../admin/organizations/overview">Organizations</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="{{urlpath}}/admin/diagnostics">Diagnostics</a> <a class="nav-link" href="../admin/diagnostics">Diagnostics</a>
</li> </li>
{{/if}} {{/if}}
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="{{urlpath}}/" target="_blank" rel="noreferrer">Vault</a> <a class="nav-link" href="../" target="_blank" rel="noreferrer">Vault</a>
</li> </li>
</ul> </ul>
{{#if logged_in}} {{#if logged_in}}
<a class="btn btn-sm btn-secondary" href="{{urlpath}}/admin/logout">Log Out</a> <a class="btn btn-sm btn-secondary" href="../admin/logout">Log Out</a>
{{/if}} {{/if}}
</div> </div>
</div> </div>
@ -135,6 +135,6 @@
} }
})(); })();
</script> </script>
<script src="{{urlpath}}/vw_static/bootstrap-native.js"></script> <script src="../vw_static/bootstrap-native.js"></script>
</body> </body>
</html> </html>

2
src/static/templates/admin/diagnostics.hbs

@ -352,7 +352,7 @@
supportString += "* Reverse proxy and version: \n"; supportString += "* Reverse proxy and version: \n";
supportString += "* Other relevant information: \n"; supportString += "* Other relevant information: \n";
let jsonResponse = await fetch('{{urlpath}}/admin/diagnostics/config'); let jsonResponse = await fetch('../admin/diagnostics/config');
const configJson = await jsonResponse.json(); const configJson = await jsonResponse.json();
supportString += "\n### Config (Generated via diagnostics page)\n<details><summary>Show Running Config</summary>\n" supportString += "\n### Config (Generated via diagnostics page)\n<details><summary>Show Running Config</summary>\n"
supportString += "\n**Environment settings which are overridden:** {{page_data.overrides}}\n" supportString += "\n**Environment settings which are overridden:** {{page_data.overrides}}\n"

8
src/static/templates/admin/organizations.hbs

@ -48,9 +48,9 @@
</div> </div>
</main> </main>
<link rel="stylesheet" href="{{urlpath}}/vw_static/datatables.css" /> <link rel="stylesheet" href="../vw_static/datatables.css" />
<script src="{{urlpath}}/vw_static/jquery-3.6.0.slim.js"></script> <script src="../vw_static/jquery-3.6.0.slim.js"></script>
<script src="{{urlpath}}/vw_static/datatables.js"></script> <script src="../vw_static/datatables.js"></script>
<script> <script>
'use strict'; 'use strict';
@ -61,7 +61,7 @@
var input_org_uuid = prompt("To delete the organization '" + name + " (" + billing_email +")', please type the organization uuid below.") var input_org_uuid = prompt("To delete the organization '" + name + " (" + billing_email +")', please type the organization uuid below.")
if (input_org_uuid != null) { if (input_org_uuid != null) {
if (input_org_uuid == id) { if (input_org_uuid == id) {
_post("{{urlpath}}/admin/organizations/" + id + "/delete", _post("../admin/organizations/" + id + "/delete",
"Organization deleted correctly", "Organization deleted correctly",
"Error deleting organization"); "Error deleting organization");
} else { } else {

8
src/static/templates/admin/settings.hbs

@ -160,7 +160,7 @@
} }
const data = JSON.stringify({ "email": test_email.value }); const data = JSON.stringify({ "email": test_email.value });
_post("{{urlpath}}/admin/test/smtp/", _post("..
"SMTP Test email sent correctly", "SMTP Test email sent correctly",
"Error sending SMTP test email", data, false); "Error sending SMTP test email", data, false);
return false; return false;
@ -183,7 +183,7 @@
} }
function saveConfig() { function saveConfig() {
const data = JSON.stringify(getFormData()); const data = JSON.stringify(getFormData());
_post("{{urlpath}}/admin/config/", "Config saved correctly", _post("..nfig/", "Config saved correctly",
"Error saving config", data); "Error saving config", data);
return false; return false;
} }
@ -191,7 +191,7 @@
var input = prompt("This will remove all user configurations, and restore the defaults and the " + 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:"); "values set by the environment. This operation could be dangerous. Type 'DELETE' to proceed:");
if (input === "DELETE") { if (input === "DELETE") {
_post("{{urlpath}}/admin/config/delete", _post("../admin/config/delete",
"Config deleted correctly", "Config deleted correctly",
"Error deleting config"); "Error deleting config");
} else { } else {
@ -201,7 +201,7 @@
return false; return false;
} }
function backupDatabase() { function backupDatabase() {
_post("{{urlpath}}/admin/config/backup_db", _post("../admin/config/backup_db",
"Backup created successfully", "Backup created successfully",
"Error creating backup", null, false); "Error creating backup", null, false);
return false; return false;

22
src/static/templates/admin/users.hbs

@ -135,9 +135,9 @@
</div> </div>
</main> </main>
<link rel="stylesheet" href="{{urlpath}}/vw_static/datatables.css" /> <link rel="stylesheet" href="..les.css" />
<script src="{{urlpath}}/vw_static/jquery-3.6.0.slim.js"></script> <script src="..3.6.0.slim.js"></script>
<script src="{{urlpath}}/vw_static/datatables.js"></script> <script src="../vw_static/datatables.js"></script>
<script> <script>
'use strict'; 'use strict';
@ -145,7 +145,7 @@
var input_mail = prompt("To delete user '" + mail + "', please type the email below") var input_mail = prompt("To delete user '" + mail + "', please type the email below")
if (input_mail != null) { if (input_mail != null) {
if (input_mail == mail) { if (input_mail == mail) {
_post("{{urlpath}}/admin/users/" + id + "/delete", _post("../admin/users/" + id + "/delete",
"User deleted correctly", "User deleted correctly",
"Error deleting user"); "Error deleting user");
} else { } else {
@ -155,13 +155,13 @@
return false; return false;
} }
function remove2fa(id) { function remove2fa(id) {
_post("{{urlpath}}/admin/users/" + id + "/remove-2fa", _post("..ers/" + id + "/remove-2fa",
"2FA removed correctly", "2FA removed correctly",
"Error removing 2FA"); "Error removing 2FA");
return false; return false;
} }
function deauthUser(id) { function deauthUser(id) {
_post("{{urlpath}}/admin/users/" + id + "/deauth", _post("..ers/" + id + "/deauth",
"Sessions deauthorized correctly", "Sessions deauthorized correctly",
"Error deauthorizing sessions"); "Error deauthorizing sessions");
return false; return false;
@ -169,7 +169,7 @@
function disableUser(id, mail) { function disableUser(id, mail) {
var confirmed = confirm("Are you sure you want to disable user '" + mail + "'? This will also deauthorize their sessions.") var confirmed = confirm("Are you sure you want to disable user '" + mail + "'? This will also deauthorize their sessions.")
if (confirmed) { if (confirmed) {
_post("{{urlpath}}/admin/users/" + id + "/disable", _post("../admin/users/" + id + "/disable",
"User disabled successfully", "User disabled successfully",
"Error disabling user"); "Error disabling user");
} }
@ -178,14 +178,14 @@
function enableUser(id, mail) { function enableUser(id, mail) {
var confirmed = confirm("Are you sure you want to enable user '" + mail + "'?") var confirmed = confirm("Are you sure you want to enable user '" + mail + "'?")
if (confirmed) { if (confirmed) {
_post("{{urlpath}}/admin/users/" + id + "/enable", _post("..ers/" + id + "/enable",
"User enabled successfully", "User enabled successfully",
"Error enabling user"); "Error enabling user");
} }
return false; return false;
} }
function updateRevisions() { function updateRevisions() {
_post("{{urlpath}}/admin/users/update_revision", _post("../admin/users/update_revision",
"Success, clients will sync next time they connect", "Success, clients will sync next time they connect",
"Error forcing clients to sync"); "Error forcing clients to sync");
return false; return false;
@ -194,7 +194,7 @@
const inv = document.getElementById("email-invite"); const inv = document.getElementById("email-invite");
const data = JSON.stringify({ "email": inv.value }); const data = JSON.stringify({ "email": inv.value });
inv.value = ""; inv.value = "";
_post("{{urlpath}}/admin/invite/", "User invited correctly", _post("../admin/invite/", "User invited correctly",
"Error inviting user", data); "Error inviting user", data);
return false; return false;
} }
@ -285,7 +285,7 @@
let orgForm = document.getElementById("userOrgTypeForm"); let orgForm = document.getElementById("userOrgTypeForm");
const data = JSON.stringify(Object.fromEntries(new FormData(orgForm).entries())); const data = JSON.stringify(Object.fromEntries(new FormData(orgForm).entries()));
_post("{{urlpath}}/admin/users/org_type", _post("../admin/users/org_type",
"Updated organization type of the user successfully", "Updated organization type of the user successfully",
"Error updating organization type of the user", data); "Error updating organization type of the user", data);
return false; return false;

Loading…
Cancel
Save