From 037ec5ea1ee4677db23d9307cf44497d91de3753 Mon Sep 17 00:00:00 2001 From: Jesus Balderrama Date: Fri, 24 Apr 2026 16:56:34 -0600 Subject: [PATCH 1/4] fix: open Roles and permissions in new tab --- src/header/hooks.tsx | 17 +++++++++++++++-- src/studio-home/StudioHome.tsx | 1 + 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/header/hooks.tsx b/src/header/hooks.tsx index adaa8a13ae..d275e2fd90 100644 --- a/src/header/hooks.tsx +++ b/src/header/hooks.tsx @@ -94,8 +94,21 @@ export const useSettingMenuItems = (courseId: string) => { }, ...(isAuthzEnabled ? [{ - href: `${getConfig().ADMIN_CONSOLE_URL}/authz?scope=${encodeURIComponent(courseId)}`, - title: intl.formatMessage(messages['header.links.roles.permissions']), + href: '#', + title: ( + { + e.preventDefault(); + window.open( + `${getConfig().ADMIN_CONSOLE_URL}/authz?scope=${encodeURIComponent(courseId)}`, + '_blank', + 'noopener,noreferrer', + ); + }} + > + {intl.formatMessage(messages['header.links.roles.permissions'])} + + ), }] : [{ href: `/course/${courseId}/course_team`, diff --git a/src/studio-home/StudioHome.tsx b/src/studio-home/StudioHome.tsx index e9076676d8..a2be1984da 100644 --- a/src/studio-home/StudioHome.tsx +++ b/src/studio-home/StudioHome.tsx @@ -82,6 +82,7 @@ const StudioHome = () => { variant="primary" iconBefore={ManageAccounts} size="sm" + target="_blank" > {intl.formatMessage(messages.addRolesPermissionsBtnText)} From 79b36aa324f4a843f3dd06f9258a46ec1a2e28e0 Mon Sep 17 00:00:00 2001 From: Jesus Balderrama Date: Fri, 24 Apr 2026 17:15:03 -0600 Subject: [PATCH 2/4] fix: test updated --- src/header/hooks.test.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/header/hooks.test.tsx b/src/header/hooks.test.tsx index 930dd0a472..f36ea7edf8 100644 --- a/src/header/hooks.test.tsx +++ b/src/header/hooks.test.tsx @@ -182,11 +182,11 @@ describe('header utils', () => { }); const actualItems = renderHook(() => useSettingMenuItems('course-123'), { wrapper: createWrapper() }).result.current; - const rolesPermissionsItem = actualItems.find(item => item.title === 'Roles and Permissions'); - expect(rolesPermissionsItem).toEqual({ - href: 'http://admin-console.example.com/authz?scope=course-123', - title: 'Roles and Permissions', - }); + const rolesPermissionsItem = actualItems.find(item => item.href === '#'); + expect(rolesPermissionsItem).toBeDefined(); + expect(rolesPermissionsItem?.href).toBe('#'); + // Check that title is a React element (since it now uses a span with onClick) + expect(typeof rolesPermissionsItem?.title).toBe('object'); }); }); From ec53a2a435ae36d1d7661b2940a400291bf1ebd5 Mon Sep 17 00:00:00 2001 From: Jesus Balderrama Date: Tue, 28 Apr 2026 12:50:27 -0600 Subject: [PATCH 3/4] fix: roles and permissions link same tab --- src/header/hooks.tsx | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/src/header/hooks.tsx b/src/header/hooks.tsx index d275e2fd90..adaa8a13ae 100644 --- a/src/header/hooks.tsx +++ b/src/header/hooks.tsx @@ -94,21 +94,8 @@ export const useSettingMenuItems = (courseId: string) => { }, ...(isAuthzEnabled ? [{ - href: '#', - title: ( - { - e.preventDefault(); - window.open( - `${getConfig().ADMIN_CONSOLE_URL}/authz?scope=${encodeURIComponent(courseId)}`, - '_blank', - 'noopener,noreferrer', - ); - }} - > - {intl.formatMessage(messages['header.links.roles.permissions'])} - - ), + href: `${getConfig().ADMIN_CONSOLE_URL}/authz?scope=${encodeURIComponent(courseId)}`, + title: intl.formatMessage(messages['header.links.roles.permissions']), }] : [{ href: `/course/${courseId}/course_team`, From 231845505b658f17d28c8fdf545eadf25fa894c0 Mon Sep 17 00:00:00 2001 From: Jesus Balderrama Date: Tue, 28 Apr 2026 12:52:08 -0600 Subject: [PATCH 4/4] fix: tests adjusted --- src/header/hooks.test.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/header/hooks.test.tsx b/src/header/hooks.test.tsx index f36ea7edf8..930dd0a472 100644 --- a/src/header/hooks.test.tsx +++ b/src/header/hooks.test.tsx @@ -182,11 +182,11 @@ describe('header utils', () => { }); const actualItems = renderHook(() => useSettingMenuItems('course-123'), { wrapper: createWrapper() }).result.current; - const rolesPermissionsItem = actualItems.find(item => item.href === '#'); - expect(rolesPermissionsItem).toBeDefined(); - expect(rolesPermissionsItem?.href).toBe('#'); - // Check that title is a React element (since it now uses a span with onClick) - expect(typeof rolesPermissionsItem?.title).toBe('object'); + const rolesPermissionsItem = actualItems.find(item => item.title === 'Roles and Permissions'); + expect(rolesPermissionsItem).toEqual({ + href: 'http://admin-console.example.com/authz?scope=course-123', + title: 'Roles and Permissions', + }); }); });