register method

  1. @override
void register(
  1. Container container
)
override

Register services with the container.

This method is called when the provider is registered with the container. Use this method to register bindings, instances, and aliases.

Implementation

@override
void register(Container container) {
  final config = container.get<Config>();
  final engineConfig = container.get<EngineConfig>();
  final resolved = spec.resolve(
    config,
    context: SecurityConfigContext(
      config: config,
      engineConfig: engineConfig,
    ),
  );
  final trustedResolver = _buildTrustedProxyResolver(resolved);
  container.instance<TrustedProxyResolver>(trustedResolver);
  _ipFilter = _buildIpFilter(resolved);

  final registry = container.get<MiddlewareRegistry>();
  registry
    ..register(
      'routed.security.trusted_proxy',
      (c) => _trustedProxyMiddleware(c.get<TrustedProxyResolver>()),
    )
    ..register('routed.security.ip_filter', (_) => _ipFilterMiddleware())
    ..register('routed.security.headers', (_) => securityHeadersMiddleware())
    ..register('routed.security.csrf', (_) => csrfMiddleware())
    ..register(
      'routed.security.request_size',
      (_) => requestSizeLimitMiddleware(),
    );
}