feat: complete current GoChat updates
This commit is contained in:
@@ -5,12 +5,12 @@ import {
|
||||
} from './permissionsHelper';
|
||||
|
||||
import {
|
||||
ROLES,
|
||||
CONVERSATION_PERMISSIONS,
|
||||
CONTACT_PERMISSIONS,
|
||||
REPORTS_PERMISSIONS,
|
||||
PORTAL_PERMISSIONS,
|
||||
} from 'dashboard/constants/permissions.js';
|
||||
import { isSuperAdminUser } from '../routes/dashboard/settings/captain/utils';
|
||||
|
||||
export const routeIsAccessibleFor = (route, userPermissions = []) => {
|
||||
const { meta: { permissions: routePermissions = [] } = {} } = route;
|
||||
@@ -22,7 +22,7 @@ export const defaultRedirectPage = (to, permissions) => {
|
||||
|
||||
const permissionRoutes = [
|
||||
{
|
||||
permissions: [...ROLES, ...CONVERSATION_PERMISSIONS],
|
||||
permissions: CONVERSATION_PERMISSIONS,
|
||||
path: 'dashboard',
|
||||
},
|
||||
{ permissions: [CONTACT_PERMISSIONS], path: 'contacts' },
|
||||
@@ -34,7 +34,11 @@ export const defaultRedirectPage = (to, permissions) => {
|
||||
hasPermissions(routePermissions, permissions)
|
||||
);
|
||||
|
||||
return `accounts/${accountId}/${route ? route.path : 'dashboard'}`;
|
||||
if (route) return `accounts/${accountId}/${route.path}`;
|
||||
if (permissions.includes('custom_role')) {
|
||||
return `accounts/${accountId}/profile/settings`;
|
||||
}
|
||||
return `accounts/${accountId}/dashboard`;
|
||||
};
|
||||
|
||||
const validateActiveAccountRoutes = (to, user) => {
|
||||
@@ -48,6 +52,10 @@ const validateActiveAccountRoutes = (to, user) => {
|
||||
|
||||
const userPermissions = getUserPermissions(user, to.params.accountId);
|
||||
|
||||
if (to.meta?.isSuperAdmin && !isSuperAdminUser(user)) {
|
||||
return defaultRedirectPage(to, userPermissions);
|
||||
}
|
||||
|
||||
const isAccessible = routeIsAccessibleFor(to, userPermissions);
|
||||
// If the route is not accessible for the user, return to dashboard screen
|
||||
return isAccessible ? null : defaultRedirectPage(to, userPermissions);
|
||||
|
||||
@@ -55,9 +55,11 @@ describe('#defaultRedirectPage', () => {
|
||||
expect(defaultRedirectPage(to, permissions)).toBe('accounts/2/portals');
|
||||
});
|
||||
|
||||
it('should return dashboard route as default for users with custom roles', () => {
|
||||
it('should return the profile route for zero-permission custom roles', () => {
|
||||
const permissions = ['custom_role'];
|
||||
expect(defaultRedirectPage(to, permissions)).toBe('accounts/2/dashboard');
|
||||
expect(defaultRedirectPage(to, permissions)).toBe(
|
||||
'accounts/2/profile/settings'
|
||||
);
|
||||
});
|
||||
|
||||
it('should return dashboard route for users with administrator role', () => {
|
||||
@@ -138,6 +140,28 @@ describe('#validateLoggedInRoutes', () => {
|
||||
)
|
||||
).toEqual(`accounts/1/dashboard`);
|
||||
});
|
||||
|
||||
it('redirects non-super-admin users from super-admin routes', () => {
|
||||
expect(
|
||||
validateLoggedInRoutes(
|
||||
{
|
||||
name: 'super_admin_dashboard',
|
||||
params: { accountId: 1 },
|
||||
meta: { isSuperAdmin: true, permissions: ['agent'] },
|
||||
},
|
||||
{
|
||||
accounts: [
|
||||
{
|
||||
id: 1,
|
||||
role: 'agent',
|
||||
permissions: ['agent'],
|
||||
status: 'active',
|
||||
},
|
||||
],
|
||||
}
|
||||
)
|
||||
).toEqual(`accounts/1/dashboard`);
|
||||
});
|
||||
});
|
||||
describe('when route is suspended route', () => {
|
||||
it('returns dashboard url', () => {
|
||||
|
||||
Reference in New Issue
Block a user