From 124aa8a9bfdc51bcde16f72f86fd8033baa90ad5 Mon Sep 17 00:00:00 2001
From: Paul Makles <paulmakles@gmail.com>
Date: Mon, 18 Jan 2021 14:01:27 +0000
Subject: [PATCH] Fix user permissions.

---
 src/database/permissions/user.rs | 20 ++++++++++++++++----
 src/routes/root.rs               |  2 +-
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/src/database/permissions/user.rs b/src/database/permissions/user.rs
index f08790a..54c8dc8 100644
--- a/src/database/permissions/user.rs
+++ b/src/database/permissions/user.rs
@@ -28,11 +28,23 @@ pub async fn calculate(user: &User, target: &str) -> UserPermissions<[u32; 1]> {
     //    otherwise -> Access
     // otherwise; None
 
-    if let RelationshipStatus::Friend = get_relationship(&user, &target) {
-        UserPermissions([UserPermission::Access + UserPermission::SendMessage + UserPermission::Invite])
-    } else {
-        UserPermissions([ 0 ])
+    let mut permissions: u32 = 0;
+    match get_relationship(&user, &target) {
+        RelationshipStatus::Friend => {
+            return UserPermissions([ UserPermission::Access + UserPermission::SendMessage + UserPermission::Invite ])
+        }
+        RelationshipStatus::Blocked |
+        RelationshipStatus::BlockedOther => {
+            return UserPermissions([ UserPermission::Access as u32 ])
+        }
+        RelationshipStatus::Incoming |
+        RelationshipStatus::Outgoing => {
+            permissions = UserPermission::Access as u32;
+        }
+        _ => {}
     }
+
+    UserPermissions([ permissions ])
 }
 
 pub fn get_relationship(a: &User, b: &str) -> RelationshipStatus {
diff --git a/src/routes/root.rs b/src/routes/root.rs
index 3465ac2..8f8f5e8 100644
--- a/src/routes/root.rs
+++ b/src/routes/root.rs
@@ -8,7 +8,7 @@ use rocket_contrib::json::JsonValue;
 #[get("/")]
 pub async fn root() -> JsonValue {
     json!({
-        "revolt": "0.3.0-alpha",
+        "revolt": "0.3.1-alpha.0",
         "features": {
             "registration": !*DISABLE_REGISTRATION,
             "captcha": {
-- 
GitLab