All files / libs/kernel/auth/shared/src/abilities/forecasted-statements definitions.ts

87.8% Statements 36/41
100% Branches 6/6
75% Functions 3/4
87.8% Lines 36/41

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 31 32 33 34 35 36 37 38 39 40 41 421x 1x 1x 1x 1x 1x 1x 1x 135x 1x 1x 1x           1x 1x 1x 50x 50x 50x 50x 50x 1x 1x 1x 64x 64x 64x 64x 64x 64x 64x 64x 64x 64x 64x 64x 1x  
import { SubjectsEnum, type DefinePermissions, type UserRoleForAccessControl } from '../../types';
import { managerCanAccessStatement, scopedAdminCanAccessStatement } from '../statements/definitions';
 
import { ForecastedStatementsActions } from './actions';
import { type CalculateForecastedStatementSubject, type SimulateForecastedStatementSubject } from './subjects';
 
export const forecastedStatementsAbilityDefinitions = {
  ADMIN(_, { can }) {
    can(ForecastedStatementsActions.simulate, SubjectsEnum.Forecasted_Statement);
  },
 
  SCOPED_ADMIN(authenticatedContext, { can }) {
    can(
      ForecastedStatementsActions.simulate,
      SubjectsEnum.Forecasted_Statement,
      (statement: SimulateForecastedStatementSubject) => scopedAdminCanAccessStatement(authenticatedContext, statement),
    );
  },
 
  MANAGER(authenticatedContext, { can }) {
    can(
      ForecastedStatementsActions.simulate,
      SubjectsEnum.Forecasted_Statement,
      (statement: SimulateForecastedStatementSubject) => managerCanAccessStatement(authenticatedContext, statement),
    );
  },
 
  EMPLOYEE({ user }, { can }) {
    can(
      ForecastedStatementsActions.simulate,
      SubjectsEnum.Forecasted_Statement,
      ({ userId }: SimulateForecastedStatementSubject) => userId === user.id,
    );
 
    can(
      ForecastedStatementsActions.calculate,
      SubjectsEnum.Forecasted_Statement,
      ({ userId }: CalculateForecastedStatementSubject) => userId === user.id,
    );
  },
} as const satisfies Partial<Record<UserRoleForAccessControl, DefinePermissions>>;