All files / libs/kernel/auth/shared/src/abilities/user-profiles fields.ts

100% Statements 30/30
100% Branches 3/3
100% Functions 2/2
100% Lines 30/30

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 311x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 19x 19x 1x  
import { permittedFieldsOf } from '@casl/ability/extra';
 
import { type UserProfile } from '@amalia/tenants/users/profile/types';
 
import { type Ability } from '../../types';
 
import { UserProfilesActions } from './actions';
import { userProfileSubject } from './subjects';
 
export const USER_PROFILE_FIELDS = [
  'adminScopeId',
  'firstName',
  'lastName',
  'email',
  'role',
  'currency',
  'externalId',
  'externalIdSource',
  'hrisId',
  'hrisIdSource',
  'language',
  'taxResidency',
] as const;
 
type EditableUserField = (typeof USER_PROFILE_FIELDS)[number];
 
export const permittedUserProfileFields = (ability: Ability, user?: Pick<UserProfile, 'id'>) =>
  permittedFieldsOf(ability, UserProfilesActions.modify, userProfileSubject(user), {
    fieldsFrom: (rule) => rule.fields || [...USER_PROFILE_FIELDS],
  }) as EditableUserField[];