Daniel García
5 years ago
No known key found for this signature in database
GPG Key ID: FC8A7D14C3CD543A
4 changed files with
26 additions and
6 deletions
-
src/api/admin.rs
-
src/static/templates/admin/base.hbs
-
src/static/templates/admin/login.hbs
-
src/static/templates/admin/page.hbs
|
|
@ -26,6 +26,7 @@ pub fn routes() -> Vec<Route> { |
|
|
|
post_admin_login, |
|
|
|
admin_page, |
|
|
|
invite_user, |
|
|
|
logout, |
|
|
|
delete_user, |
|
|
|
deauth_user, |
|
|
|
remove_2fa, |
|
|
@ -109,6 +110,7 @@ struct AdminTemplateData { |
|
|
|
users: Vec<Value>, |
|
|
|
config: Value, |
|
|
|
can_backup: bool, |
|
|
|
logged_in: bool |
|
|
|
} |
|
|
|
|
|
|
|
impl AdminTemplateData { |
|
|
@ -119,6 +121,7 @@ impl AdminTemplateData { |
|
|
|
users, |
|
|
|
config: CONFIG.prepare_json(), |
|
|
|
can_backup: *CAN_BACKUP, |
|
|
|
logged_in: true |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@ -166,6 +169,12 @@ fn invite_user(data: Json<InviteData>, _token: AdminToken, conn: DbConn) -> Empt |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
#[get("/logout")] |
|
|
|
fn logout(mut cookies: Cookies) -> Result<Redirect, ()> { |
|
|
|
cookies.remove(Cookie::named(COOKIE_NAME)); |
|
|
|
Ok(Redirect::to(ADMIN_PATH)) |
|
|
|
} |
|
|
|
|
|
|
|
#[get("/users")] |
|
|
|
fn get_users(_token: AdminToken, conn: DbConn) -> JsonResult { |
|
|
|
let users = User::get_all(&conn); |
|
|
|
|
|
@ -33,7 +33,7 @@ |
|
|
|
</head> |
|
|
|
|
|
|
|
<body class="bg-light"> |
|
|
|
<nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top shadow"> |
|
|
|
<nav class="navbar navbar-expand-sm navbar-dark bg-dark fixed-top shadow"> |
|
|
|
<a class="navbar-brand" href="#">Bitwarden_rs</a> |
|
|
|
<div class="navbar-collapse"> |
|
|
|
<ul class="navbar-nav"> |
|
|
@ -45,9 +45,20 @@ |
|
|
|
</li> |
|
|
|
</ul> |
|
|
|
</div> |
|
|
|
{{#if version}} |
|
|
|
<div class="navbar-text">Version: {{version}}</div> |
|
|
|
{{/if}} |
|
|
|
|
|
|
|
<ul class="navbar-nav"> |
|
|
|
{{#if version}} |
|
|
|
<li class="nav-item"> |
|
|
|
<span class="navbar-text mr-2">Version: {{version}}</span> |
|
|
|
</li> |
|
|
|
{{/if}} |
|
|
|
|
|
|
|
{{#if logged_in}} |
|
|
|
<li class="nav-item"> |
|
|
|
<a class="nav-link" href="/admin/logout">Log Out</a> |
|
|
|
</li> |
|
|
|
{{/if}} |
|
|
|
</ul> |
|
|
|
</nav> |
|
|
|
|
|
|
|
{{> (page_content) }} |
|
|
|
|
|
@ -14,7 +14,7 @@ |
|
|
|
|
|
|
|
<form class="form-inline" method="post"> |
|
|
|
<input type="password" class="form-control w-50 mr-2" name="token" placeholder="Enter admin token"> |
|
|
|
<button type="submit" class="btn btn-primary">Save</button> |
|
|
|
<button type="submit" class="btn btn-primary">Enter</button> |
|
|
|
</form> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
@ -191,7 +191,7 @@ |
|
|
|
|
|
|
|
<script> |
|
|
|
function reload() { window.location.reload(); } |
|
|
|
function msg(text) { alert(text); reload(); } |
|
|
|
function msg(text) { text && alert(text); reload(); } |
|
|
|
function identicon(email) { |
|
|
|
const data = new Identicon(md5(email), { size: 48, format: 'svg' }); |
|
|
|
return "data:image/svg+xml;base64," + data.toString(); |
|
|
|