mirror of
https://gitlab.com/mobicoop/v3/service/auth.git
synced 2026-01-12 05:42:40 +00:00
authorization presenter
This commit is contained in:
10
src/modules/authorization/domain/entities/authorization.ts
Normal file
10
src/modules/authorization/domain/entities/authorization.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
import { AutoMap } from '@automapper/classes';
|
||||
|
||||
export class Authorization {
|
||||
@AutoMap()
|
||||
allow: boolean;
|
||||
|
||||
constructor(allow: boolean) {
|
||||
this.allow = allow;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { Action } from '../dtos/action.enum';
|
||||
import { Domain } from '../dtos/domain.enum';
|
||||
import { Authorization } from '../entities/authorization';
|
||||
|
||||
@Injectable()
|
||||
export abstract class IMakeDecision {
|
||||
@@ -9,5 +10,5 @@ export abstract class IMakeDecision {
|
||||
domain: Domain,
|
||||
action: Action,
|
||||
context: Array<{ name: string; value: string }>,
|
||||
): Promise<boolean>;
|
||||
): Promise<Authorization>;
|
||||
}
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
import { QueryHandler } from '@nestjs/cqrs';
|
||||
import { OpaDecisionMaker } from '../../adapters/secondaries/opa.decision-maker';
|
||||
import { DecisionQuery } from '../../queries/decision.query';
|
||||
import { Authorization } from '../entities/authorization';
|
||||
|
||||
@QueryHandler(DecisionQuery)
|
||||
export class DecisionUseCase {
|
||||
constructor(private readonly _decisionMaker: OpaDecisionMaker) {}
|
||||
|
||||
async execute(decisionQuery: DecisionQuery): Promise<boolean> {
|
||||
async execute(decisionQuery: DecisionQuery): Promise<Authorization> {
|
||||
return this._decisionMaker.decide(
|
||||
decisionQuery.uuid,
|
||||
decisionQuery.domain,
|
||||
|
||||
Reference in New Issue
Block a user