Middlewares e Guards
In Nidus, middlewares are defined per route via RouteModule('/path', TModule, [TMiddleware...]).

The contract is IRouteMiddleware:
Before(ARoute): runs before module resolution (can adjust route data)Call(AReq): runs during the request (if it returnsFalse, Nidus raisesEUnauthorizedException)After(ARoute): runs after flow completion (finalization hook)
Example
unit App.Module;
interface
uses
Nidus.Module,
Nidus.Route.Abstract,
Nidus.Request,
NFe.Module;
type
TAuthGuard = class(TRouteMiddleware)
public
function Call(const AReq: IRouteRequest): Boolean; override;
end;
TAppModule = class(TModule)
public
function Routes: TRoutes; override;
end;
implementation
function TAuthGuard.Call(const AReq: IRouteRequest): Boolean;
begin
Result := (AReq.Username = 'user') and (AReq.Password = '123456');
end;
function TAppModule.Routes: TRoutes;
begin
Result := [
RouteModule('/nfe/:id', TNFeModule, [TAuthGuard])
];
end;
end.