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 appConfig = container.get<Config>();
  final resolved = _resolveSessionConfig(container, appConfig);
  if (resolved != null) {
    container.instance<SessionConfig>(resolved);
    _managesConfig = true;
  } else {
    _managesConfig = false;
  }

  final registry = container.get<MiddlewareRegistry>();
  registry.register('routed.sessions.start', (c) {
    SessionConfig? config;
    if (c.has<SessionConfig>()) {
      config = c.get<SessionConfig>();
    } else {
      config = _resolveSessionConfig(c, c.get<Config>());
      if (config != null) {
        c.instance<SessionConfig>(config);
      }
    }

    if (config == null) {
      return (ctx, next) async => await next();
    }
    return sessionMiddleware(store: config.store, name: config.cookieName);
  });
}