fix: resolve permission UUIDs to names in role DTO
The build_role_dto function was using permission UUIDs as both id and name fields. Now resolves UUIDs to human-readable names via PermissionsEnum::iter() lookup. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
d014a94ea4
commit
4ee00f1fe5
@@ -1,10 +1,11 @@
|
||||
#![allow(clippy::field_reassign_with_default)]
|
||||
use crate::users::domain::UserListItem;
|
||||
use imphnen_entities::{
|
||||
PermissionsQueryDto, RolesDetailQueryDto, UsersDetailQueryDto,
|
||||
PermissionsEnum, PermissionsQueryDto, RolesDetailQueryDto, UsersDetailQueryDto,
|
||||
seaorm::auth::roles::Entity as RolesEntity,
|
||||
seaorm::auth::users::{Column as UserColumn, Entity as UsersEntity},
|
||||
};
|
||||
use strum::IntoEnumIterator;
|
||||
use imphnen_utils::AppError;
|
||||
use paginator_rs::{PaginationParams, SortDirection};
|
||||
use paginator_utils::{PaginatorResponse, PaginatorResponseMeta};
|
||||
@@ -12,6 +13,15 @@ use sea_orm::prelude::*;
|
||||
use sea_orm::{Order, PaginatorTrait, QueryOrder};
|
||||
use std::sync::Arc;
|
||||
|
||||
fn resolve_permission_name(id: &str) -> String {
|
||||
for perm in PermissionsEnum::iter() {
|
||||
if perm.id() == id {
|
||||
return perm.to_string();
|
||||
}
|
||||
}
|
||||
id.to_string()
|
||||
}
|
||||
|
||||
pub fn build_role_dto(
|
||||
role: Option<imphnen_entities::seaorm::auth::roles::Model>,
|
||||
) -> RolesDetailQueryDto {
|
||||
@@ -25,9 +35,10 @@ pub fn build_role_dto(
|
||||
list
|
||||
.into_iter()
|
||||
.map(|p| {
|
||||
let name = resolve_permission_name(&p);
|
||||
Some(PermissionsQueryDto {
|
||||
id: Some(p.clone()),
|
||||
name: Some(p),
|
||||
id: Some(p),
|
||||
name: Some(name),
|
||||
created_at: None,
|
||||
updated_at: None,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user