Add some configuration options for instance admins

This commit is contained in:
Bat
2018-07-27 19:05:36 +02:00
parent 826772ca20
commit 74ec59e77c
21 changed files with 200 additions and 9 deletions
+19
View File
@@ -0,0 +1,19 @@
use rocket::{Outcome, http::Status, request::{self, FromRequest, Request}};
use users::User;
/// Wrapper around User to use as a request guard on pages reserved to admins.
pub struct Admin(pub User);
impl<'a, 'r> FromRequest<'a, 'r> for Admin {
type Error = ();
fn from_request(request: &'a Request<'r>) -> request::Outcome<Admin, ()> {
let user = request.guard::<User>()?;
if user.is_admin {
Outcome::Success(Admin(user))
} else {
Outcome::Failure((Status::Unauthorized, ()))
}
}
}