Optimized permissions

This commit is contained in:
2025-02-14 15:59:11 +01:00
parent 701d430742
commit 349c1a24a4
7 changed files with 78 additions and 26 deletions

View File

@@ -4,7 +4,7 @@ use axum::{extract::State, http::HeaderMap, Json};
use sqlx::PgPool;
use crate::{
auth::{get_user_from_header, AuthError},
auth::get_user_from_header,
database::model::Member as DbMember,
model::{
member::{Groups, Name, Roles},
@@ -14,16 +14,15 @@ use crate::{
AppState,
};
pub async fn migrate_request<'a>(
pub async fn migrate_request(
State(state): State<AppState>,
headers: HeaderMap,
body: String,
) -> Result<Json<MigrationResponse>, crate::Error> {
let (roles, _user) = get_user_from_header(&state.pool, &headers).await?;
let user = get_user_from_header(&state.pool, &headers).await?;
if !roles.contains(Roles::ADMIN) {
return Err(AuthError::NoPermssions.into());
}
user.authorize(&state.pool, Some(Roles::ADMIN), None)
.await?;
tracing::info!("Migration is requested");
@@ -46,10 +45,15 @@ pub async fn migrate_request<'a>(
Ok(Json(MigrationResponse::from((count, members_diff))))
}
pub async fn migrate_confirm<'a>(
pub async fn migrate_confirm(
State(state): State<AppState>,
headers: HeaderMap,
body: String,
) -> Result<(), crate::Error> {
let user = get_user_from_header(&state.pool, &headers).await?;
user.authorize(&state.pool, Some(Roles::ADMIN), None)
.await?;
tracing::info!("Migration is confirmed");
let count = match body.trim().parse::<u32>() {