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:
maulanasdqn
2026-04-09 21:52:50 +07:00
co-authored by Claude Opus 4.6
parent d014a94ea4
commit 4ee00f1fe5
@@ -1,10 +1,11 @@
#![allow(clippy::field_reassign_with_default)] #![allow(clippy::field_reassign_with_default)]
use crate::users::domain::UserListItem; use crate::users::domain::UserListItem;
use imphnen_entities::{ use imphnen_entities::{
PermissionsQueryDto, RolesDetailQueryDto, UsersDetailQueryDto, PermissionsEnum, PermissionsQueryDto, RolesDetailQueryDto, UsersDetailQueryDto,
seaorm::auth::roles::Entity as RolesEntity, seaorm::auth::roles::Entity as RolesEntity,
seaorm::auth::users::{Column as UserColumn, Entity as UsersEntity}, seaorm::auth::users::{Column as UserColumn, Entity as UsersEntity},
}; };
use strum::IntoEnumIterator;
use imphnen_utils::AppError; use imphnen_utils::AppError;
use paginator_rs::{PaginationParams, SortDirection}; use paginator_rs::{PaginationParams, SortDirection};
use paginator_utils::{PaginatorResponse, PaginatorResponseMeta}; use paginator_utils::{PaginatorResponse, PaginatorResponseMeta};
@@ -12,6 +13,15 @@ use sea_orm::prelude::*;
use sea_orm::{Order, PaginatorTrait, QueryOrder}; use sea_orm::{Order, PaginatorTrait, QueryOrder};
use std::sync::Arc; 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( pub fn build_role_dto(
role: Option<imphnen_entities::seaorm::auth::roles::Model>, role: Option<imphnen_entities::seaorm::auth::roles::Model>,
) -> RolesDetailQueryDto { ) -> RolesDetailQueryDto {
@@ -25,9 +35,10 @@ pub fn build_role_dto(
list list
.into_iter() .into_iter()
.map(|p| { .map(|p| {
let name = resolve_permission_name(&p);
Some(PermissionsQueryDto { Some(PermissionsQueryDto {
id: Some(p.clone()), id: Some(p),
name: Some(p), name: Some(name),
created_at: None, created_at: None,
updated_at: None, updated_at: None,
}) })