Skip to content

Commit 380575e

Browse files
committed
feat(superadmin): add initial migration
1 parent c0282ac commit 380575e

File tree

5 files changed

+34
-2
lines changed

5 files changed

+34
-2
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
-- Add down migration script here
2+
3+
ALTER TABLE developers
4+
DROP COLUMN superadmin;
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
-- Add up migration script here
2+
3+
ALTER TABLE developers
4+
ADD COLUMN superadmin BOOLEAN DEFAULT false NOT NULL;

src/database/repository/developers.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ pub async fn index(
2222
display_name,
2323
verified,
2424
admin,
25+
superadmin,
2526
github_user_id as github_id
2627
FROM developers
2728
WHERE (
@@ -80,6 +81,7 @@ pub async fn fetch_or_insert_github(
8081
display_name,
8182
verified,
8283
admin,
84+
superadmin,
8385
github_user_id as github_id
8486
FROM developers
8587
WHERE github_user_id = $1",
@@ -109,6 +111,7 @@ async fn insert_github(
109111
display_name,
110112
verified,
111113
admin,
114+
superadmin,
112115
github_user_id as github_id",
113116
username,
114117
github_id
@@ -128,6 +131,7 @@ pub async fn get_one(id: i32, conn: &mut PgConnection) -> Result<Option<Develope
128131
display_name,
129132
verified,
130133
admin,
134+
superadmin,
131135
github_user_id as github_id
132136
FROM developers
133137
WHERE id = $1",
@@ -151,6 +155,7 @@ pub async fn get_one_by_username(
151155
display_name,
152156
verified,
153157
admin,
158+
superadmin,
154159
github_user_id as github_id
155160
FROM developers
156161
WHERE username = $1",
@@ -298,6 +303,7 @@ pub async fn get_owner_for_mod(
298303
dev.display_name,
299304
dev.verified,
300305
dev.admin,
306+
dev.superadmin,
301307
github_user_id as github_id
302308
FROM developers dev
303309
INNER JOIN mods_developers md ON md.developer_id = dev.id
@@ -329,6 +335,7 @@ pub async fn update_status(
329335
display_name,
330336
verified,
331337
admin,
338+
superadmin,
332339
github_user_id as github_id",
333340
admin,
334341
verified,
@@ -356,6 +363,7 @@ pub async fn update_profile(
356363
display_name,
357364
verified,
358365
admin,
366+
superadmin,
359367
github_user_id as github_id",
360368
display_name,
361369
dev_id
@@ -378,6 +386,7 @@ pub async fn find_by_refresh_token(
378386
d.username,
379387
d.display_name,
380388
d.admin,
389+
d.superadmin,
381390
d.verified,
382391
d.github_user_id as github_id
383392
FROM developers d
@@ -405,6 +414,7 @@ pub async fn find_by_token(
405414
d.display_name,
406415
d.verified,
407416
d.admin,
417+
d.superadmin,
408418
d.github_user_id as github_id
409419
FROM developers d
410420
INNER JOIN auth_tokens a ON d.id = a.developer_id

src/extractors/auth.rs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,20 @@ impl Auth {
4747
pub fn check_admin(&self) -> Result<(), ApiError> {
4848
self.check_auth()?;
4949

50-
match self.developer.as_ref().is_some_and(|dev| dev.admin) {
50+
match self
51+
.developer
52+
.as_ref()
53+
.is_some_and(|dev| dev.admin || dev.superadmin)
54+
{
55+
false => Err(ApiError::Authorization),
56+
true => Ok(()),
57+
}
58+
}
59+
60+
pub fn check_superadmin(&self) -> Result<(), ApiError> {
61+
self.check_auth()?;
62+
63+
match self.developer.as_ref().is_some_and(|dev| dev.superadmin) {
5164
false => Err(ApiError::Authorization),
5265
true => Ok(()),
5366
}

src/types/models/developer.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,6 @@ pub struct Developer {
1515
pub display_name: String,
1616
pub verified: bool,
1717
pub admin: bool,
18-
pub github_id: i64
18+
pub superadmin: bool,
19+
pub github_id: i64,
1920
}

0 commit comments

Comments
 (0)