import { Global, Module } from '@nestjs/common';

import { CaslAbilityFactory } from './casl-ability.factory';
import { PoliciesGuard } from './policies.guard';
import { RolesGuard } from './roles.guard';

/**
 * Global so the ability factory and policies guard can be used by any module
 * (e.g. @UseGuards(JwtAuthGuard, PoliciesGuard)) without re-importing.
 */
@Global()
@Module({
  providers: [CaslAbilityFactory, PoliciesGuard, RolesGuard],
  exports: [CaslAbilityFactory, PoliciesGuard, RolesGuard],
})
export class CaslModule {}
