start(); } return $session; }; $twofas_container['request'] = function ( $c ) use ( $twofas_get, $twofas_post, $twofas_server ) { return new Request( $twofas_get, $twofas_post, $c['cookie'], $twofas_server ); }; $twofas_container['route'] = function ( $c ) { return new Route( $c['request'], $c['controller_factory'], $c['middleware_bag'], $c['error_handler'] ); }; $twofas_container['browser'] = $twofas_container->factory( function ( $c ) { /** @var Request $request */ $request = $c['request']; return new Browser( $request->header( 'HTTP_USER_AGENT' ) ); } ); /** * -------------------------------------------------------------------------------------------------------------------- * Middleware * -------------------------------------------------------------------------------------------------------------------- */ $twofas_container['middleware_bag'] = function ( $c ) { return new Middleware_Bag(); }; $twofas_container->extend( 'middleware_bag', function ( Middleware_Bag $middleware_bag, $c ) { $middleware_bag->add_middleware( 'account_exists', $c['check_account_exists'] ); $middleware_bag->add_middleware( 'account_not_exists', $c['check_account_not_exists'] ); $middleware_bag->add_middleware( 'ajax', $c['check_ajax'] ); $middleware_bag->add_middleware( 'nonce', $c['check_nonce'] ); $middleware_bag->add_middleware( 'premium_plan', $c['check_premium_plan'] ); $middleware_bag->add_middleware( 'user', $c['check_user'] ); $middleware_bag->add_middleware( 'admin', $c['check_admin'] ); $middleware_bag->add_middleware( 'integration_user', $c['check_integration_user'] ); $middleware_bag->add_middleware( 'second_factor_enabled', $c['check_second_factor_enabled'] ); return $middleware_bag; } ); $twofas_container['check_account_exists'] = function ( $c ) { return new Check_Account_Exists( $c['plugin_status'], $c['flash'] ); }; $twofas_container['check_account_not_exists'] = function ( $c ) { return new Check_Account_Not_Exists( $c['plugin_status'], $c['flash'] ); }; $twofas_container['check_ajax'] = function ( $c ) { return new Check_Ajax( $c['request'], $c['flash'], $c['url'] ); }; $twofas_container['check_nonce'] = function ( $c ) { return new Check_Nonce( $c['request'], $c['flash'], $c['url'] ); }; $twofas_container['check_premium_plan'] = function ( $c ) { return new Check_Premium_Plan( $c['options_storage'], $c['flash'] ); }; $twofas_container['check_user'] = function ( $c ) { return new Check_User_Has_Read_Capability(); }; $twofas_container['check_integration_user'] = function ( $c ) { return new Check_Integration_User( $c['request'], $c['user_storage'], $c['api_wrapper'] ); }; $twofas_container['check_admin'] = function ( $c ) { return new Check_User_Is_Admin(); }; $twofas_container['check_second_factor_enabled'] = function ( $c ) { return new Check_Second_Factor_Enabled( $c['request'], $c['flash'], $c['notification_repository'], $c['user_storage'] ); }; /** * -------------------------------------------------------------------------------------------------------------------- * Controllers * -------------------------------------------------------------------------------------------------------------------- */ $twofas_container['account_controller'] = function ( $c ) { return new Account_Controller( $c['storage'], $c['api_wrapper'], $c['flash'] ); }; $twofas_container['dashboard_controller'] = function ( $c ) { return new Dashboard_Controller( $c['storage'], $c['api_wrapper'], $c['flash'], $c['legacy_mode_checker'] ); }; $twofas_container['settings_controller'] = function ( $c ) { return new Settings_Controller( $c['storage'], $c['api_wrapper'], $c['flash'] ); }; $twofas_container['channel_controller'] = function ( $c ) { return new Channel_Controller( $c['storage'], $c['api_wrapper'], $c['flash'], $c['session'] ); }; $twofas_container['modal_controller'] = function ( $c ) { return new Modal_Controller( $c['storage'], $c['api_wrapper'], $c['flash'] ); }; $twofas_container['offline_codes_configuration_controller'] = function ( $c ) { return new Offline_Codes_Configuration_Controller( $c['storage'], $c['api_wrapper'], $c['flash'], $c['twig'], $c['environment'], $c['legacy_mode_checker'] ); }; $twofas_container['sms_configuration_controller'] = function ( $c ) { return new SMS_Configuration_Controller( $c['storage'], $c['api_wrapper'], $c['flash'], $c['legacy_mode_checker'] ); }; $twofas_container['totp_configuration_controller'] = function ( $c ) { return new TOTP_Configuration_Controller( $c['storage'], $c['api_wrapper'], $c['flash'], $c['session'], $c['qr_code_message'], $c['legacy_mode_checker'] ); }; $twofas_container['trusted_devices_controller'] = function ( $c ) { return new Trusted_Devices_Controller( $c['storage'], $c['api_wrapper'], $c['flash'], $c['browser'], $c['legacy_mode_checker'] ); };