fix(editor): Replace isInstanceOwner checks with scopes where applicable (#7858)

Co-authored-by: Alex Grozav <alex@grozav.com>
This commit is contained in:
Csaba Tuncsik
2023-12-04 10:02:54 +01:00
committed by GitHub
parent 39fa8d21bb
commit 132d691cbf
21 changed files with 111 additions and 67 deletions

View File

@@ -6,6 +6,7 @@ vi.mock('@/rbac/checks', () => ({
hasScope: vi.fn(),
isGuest: vi.fn(),
isDefaultUser: vi.fn(),
isInstanceOwner: vi.fn(),
isAuthenticated: vi.fn(),
isEnterpriseFeatureEnabled: vi.fn(),
isValid: vi.fn(),
@@ -17,6 +18,7 @@ describe('hasPermission()', () => {
vi.mocked(checks.hasScope).mockReturnValue(true);
vi.mocked(checks.isGuest).mockReturnValue(true);
vi.mocked(checks.isDefaultUser).mockReturnValue(true);
vi.mocked(checks.isInstanceOwner).mockReturnValue(true);
vi.mocked(checks.isAuthenticated).mockReturnValue(true);
vi.mocked(checks.isEnterpriseFeatureEnabled).mockReturnValue(true);
vi.mocked(checks.isValid).mockReturnValue(true);
@@ -30,6 +32,7 @@ describe('hasPermission()', () => {
'rbac',
'role',
'defaultUser',
'instanceOwner',
]),
).toBe(true);
});

View File

@@ -0,0 +1,26 @@
import { useUsersStore } from '@/stores/users.store';
import { isInstanceOwner } from '@/rbac/checks/isInstanceOwner';
vi.mock('@/stores/users.store', () => ({
useUsersStore: vi.fn(),
}));
describe('Checks', () => {
describe('isInstanceOwner()', () => {
it('should return false if user not logged in', () => {
vi.mocked(useUsersStore).mockReturnValue({ isInstanceOwner: false } as ReturnType<
typeof useUsersStore
>);
expect(isInstanceOwner()).toBe(false);
});
it('should return true if user is default user', () => {
vi.mocked(useUsersStore).mockReturnValue({ isInstanceOwner: true } as unknown as ReturnType<
typeof useUsersStore
>);
expect(isInstanceOwner()).toBe(true);
});
});
});

View File

@@ -2,6 +2,7 @@ export * from './hasRole';
export * from './hasScope';
export * from './isAuthenticated';
export * from './isDefaultUser';
export * from './isInstanceOwner';
export * from './isEnterpriseFeatureEnabled';
export * from './isGuest';
export * from './isValid';

View File

@@ -0,0 +1,5 @@
import { useUsersStore } from '@/stores/users.store';
import type { DefaultUserMiddlewareOptions, RBACPermissionCheck } from '@/types/rbac';
export const isInstanceOwner: RBACPermissionCheck<DefaultUserMiddlewareOptions> = () =>
useUsersStore().isInstanceOwner;

View File

@@ -3,6 +3,7 @@ import {
hasScope,
isAuthenticated,
isDefaultUser,
isInstanceOwner,
isEnterpriseFeatureEnabled,
isGuest,
isValid,
@@ -17,6 +18,7 @@ export const permissions: Permissions = {
authenticated: isAuthenticated,
custom: isValid,
defaultUser: isDefaultUser,
instanceOwner: isInstanceOwner,
enterprise: isEnterpriseFeatureEnabled,
guest: isGuest,
rbac: hasScope,