diff --git a/src/database/entities/user.rs b/src/database/entities/user.rs
index ef0d57245d746c2551964a56c0c755b48a2ba6d5..b40bf3b52770312ae5d2c2db13e915314987340d 100644
--- a/src/database/entities/user.rs
+++ b/src/database/entities/user.rs
@@ -1,8 +1,3 @@
-use crate::database::*;
-use mongodb::bson::{doc, from_bson, Bson};
-use rauth::auth::Session;
-use rocket::http::Status;
-use rocket::request::{self, FromRequest, Outcome, Request};
 use serde::{Deserialize, Serialize};
 
 #[derive(Serialize, Deserialize, Debug, Clone)]
@@ -35,41 +30,3 @@ pub struct User {
     #[serde(skip_serializing_if = "Option::is_none")]
     pub relationship: Option<RelationshipStatus>,
 }
-
-#[rocket::async_trait]
-impl<'a, 'r> FromRequest<'a, 'r> for User {
-    type Error = rauth::util::Error;
-
-    async fn from_request(request: &'a Request<'r>) -> request::Outcome<Self, Self::Error> {
-        let session: Session = try_outcome!(request.guard::<Session>().await);
-
-        if let Ok(result) = get_collection("users")
-            .find_one(
-                doc! {
-                    "_id": &session.user_id
-                },
-                None,
-            )
-            .await
-        {
-            if let Some(doc) = result {
-                Outcome::Success(from_bson(Bson::Document(doc)).unwrap())
-            } else {
-                Outcome::Failure((Status::Forbidden, rauth::util::Error::InvalidSession))
-            }
-        } else {
-            Outcome::Failure((
-                Status::InternalServerError,
-                rauth::util::Error::DatabaseError,
-            ))
-        }
-    }
-}
-
-impl User {
-    pub fn as_ref(&self) -> Ref {
-        Ref {
-            id: self.id.to_string(),
-        }
-    }
-}
diff --git a/src/database/guards/reference.rs b/src/database/guards/reference.rs
index 125f6899a2acce065da4943e9cdbc7e4a3245644..bdad5ce5bdae7fda3b5f1b030691728808af99db 100644
--- a/src/database/guards/reference.rs
+++ b/src/database/guards/reference.rs
@@ -42,6 +42,14 @@ impl Ref {
     }
 }
 
+impl User {
+    pub fn as_ref(&self) -> Ref {
+        Ref {
+            id: self.id.to_string(),
+        }
+    }
+}
+
 impl<'r> FromParam<'r> for Ref {
     type Error = &'r RawStr;
 
diff --git a/src/database/guards/user.rs b/src/database/guards/user.rs
index 8b137891791fe96927ad78e64b0aad7bded08bdc..7602aefa5fa8915fb33b4415672192866bad0418 100644
--- a/src/database/guards/user.rs
+++ b/src/database/guards/user.rs
@@ -1 +1,36 @@
+use crate::database::*;
 
+use mongodb::bson::{doc, from_bson, Bson};
+use rauth::auth::Session;
+use rocket::http::Status;
+use rocket::request::{self, FromRequest, Outcome, Request};
+
+#[rocket::async_trait]
+impl<'a, 'r> FromRequest<'a, 'r> for User {
+    type Error = rauth::util::Error;
+
+    async fn from_request(request: &'a Request<'r>) -> request::Outcome<Self, Self::Error> {
+        let session: Session = try_outcome!(request.guard::<Session>().await);
+
+        if let Ok(result) = get_collection("users")
+            .find_one(
+                doc! {
+                    "_id": &session.user_id
+                },
+                None,
+            )
+            .await
+        {
+            if let Some(doc) = result {
+                Outcome::Success(from_bson(Bson::Document(doc)).unwrap())
+            } else {
+                Outcome::Failure((Status::Forbidden, rauth::util::Error::InvalidSession))
+            }
+        } else {
+            Outcome::Failure((
+                Status::InternalServerError,
+                rauth::util::Error::DatabaseError,
+            ))
+        }
+    }
+}