Skip to content

Commit 5300f86

Browse files
authored
Merge pull request #184 from CSE-Shaco/develop
fix(user-admin): User role 정렬 규칙 변경(alphabet order -> priority order)
2 parents 82fb42c + c49b12d commit 5300f86

File tree

1 file changed

+18
-5
lines changed

1 file changed

+18
-5
lines changed

src/app/admin/member-manager/page.jsx

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ const roleColor = (r) => ({
3434
ADMIN: 'danger', ORGANIZER: 'warning', LEAD: 'secondary', CORE: 'success', MEMBER: 'primary',
3535
}[r] || 'default');
3636

37+
const ROLE_RANK = {GUEST: 0, MEMBER: 1, CORE: 2, LEAD: 3, ORGANIZER: 4, ADMIN: 5};
38+
const getRoleRank = (r) => ROLE_RANK[r] ?? -1;
39+
3740
export default function AdminUsersPage() {
3841
const {apiClient} = useAuthenticatedApi();
3942
const {accessToken} = useAuth();
@@ -104,10 +107,20 @@ export default function AdminUsersPage() {
104107
const params = {page: page - 1, size: rowsPerPage, sort, dir, q: query || undefined};
105108

106109
const res = await apiClient.get('/admin/users', {params});
107-
const pageData = res?.data?.data; // Page<UserSummaryResponse>
110+
const pageData = res?.data?.data;
108111
const meta = res?.data?.meta;
109112

110-
const content = Array.isArray(pageData?.content) ? pageData.content : [];
113+
let content = Array.isArray(pageData?.content) ? pageData.content : [];
114+
115+
// ⬇️ ROLE 컬럼 정렬일 때, 알파벳 대신 서열로 보정
116+
if (sortDescriptor.column === 'userRole') {
117+
const asc = sortDescriptor.direction !== 'descending';
118+
content = content.slice().sort((a, b) => {
119+
const diff = getRoleRank(a.userRole) - getRoleRank(b.userRole);
120+
return asc ? diff : -diff;
121+
});
122+
}
123+
111124
setRows(content);
112125

113126
const total = meta?.totalElements ?? pageData?.totalElements ?? content.length;
@@ -225,6 +238,9 @@ export default function AdminUsersPage() {
225238
{/* NAME */}
226239
<TableCell>
227240
<span className="font-medium">{user.name}</span>
241+
<Chip size="sm" variant="flat" color={roleColor(user.userRole)}>
242+
{user.userRole}
243+
</Chip>
228244
</TableCell>
229245

230246
{/* MAJOR */}
@@ -241,9 +257,6 @@ export default function AdminUsersPage() {
241257
{/* ROLE */}
242258
<TableCell>
243259
<div className="flex items-center gap-3">
244-
<Chip size="sm" variant="flat" color={roleColor(user.userRole)}>
245-
{user.userRole}
246-
</Chip>
247260
<Select
248261
aria-label="역할 수정"
249262
selectedKeys={new Set([user.userRole || ''])}

0 commit comments

Comments
 (0)