From 4ee00f1fe520c0711c51bd4e6e83cd3c557e15cf Mon Sep 17 00:00:00 2001 From: maulanasdqn Date: Thu, 9 Apr 2026 21:52:50 +0700 Subject: [PATCH] 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) --- .../persistence/postgres_user_queries.rs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/imphnen-iam/src/users/infrastructure/persistence/postgres_user_queries.rs b/imphnen-iam/src/users/infrastructure/persistence/postgres_user_queries.rs index 82175a2..69a5e99 100644 --- a/imphnen-iam/src/users/infrastructure/persistence/postgres_user_queries.rs +++ b/imphnen-iam/src/users/infrastructure/persistence/postgres_user_queries.rs @@ -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, ) -> 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, })