Skip to content

Commit fc06337

Browse files
committed
refactor: Transition to Horde\Injector\Injector and a lean middleware stack
Horde_Injector is a Horde\Injector\Injector and has been for a while. src/ code should type hint Horde\Injector\Injector (compatible with Horde_Injector). Reworked the controller framework - The bootstrap doesn't setup any legacy globals. horde/core now provides a helper to emit a default middleware stack with legacy globals. Routes which need them need to declare HordeCore middleware in their stack. See related PRs for explicitly declaring middleware stacks in multiple apps. horde/skeleton#1 horde/base#88 horde/content#5 horde/jonah#7 horde/trean#4 horde/wicked#23 horde/nag#16 AppRouter is no longer necessary, RuntimeRoutesMapper is used to bootstrap routes from development files. Todo: Implement a PrecompiledRoutesMapper and RoutesMapperCompiler
1 parent e12b257 commit fc06337

67 files changed

Lines changed: 691 additions & 388 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/DefaultInjectorBindings.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
use Horde\Core\Factory\DbAdapterFactory;
3434
use Horde\Core\Factory\DbServiceFactory;
3535
use Horde\Core\Factory\DriverRepositoryFactory;
36+
use Horde\Core\Factory\ErrorFilterFactory;
3637
use Horde\Core\Factory\EventDispatcherFactory;
3738
use Horde\Core\Factory\GroupServiceFactory;
3839
use Horde\Core\Factory\HashTableFactory;
@@ -80,6 +81,7 @@
8081
use Horde\Core\Factory\TinymcePageBinderFactory;
8182
use Horde\Core\Factory\VersionServiceFactory;
8283
use Horde\Core\Middleware\AuthIsGlobalAdmin;
84+
use Horde\Core\Middleware\ErrorFilter;
8385
use Horde\Core\Middleware\OAuthConsentMiddleware;
8486
use Horde\Core\Service\ApplicationService;
8587
use Horde\Core\Service\GroupService;
@@ -142,7 +144,7 @@
142144
use Horde\Http\ResponseFactory;
143145
use Horde\Http\StreamFactory;
144146
use Horde\Util\Variables;
145-
use Horde_Injector;
147+
use Horde\Injector\Injector;
146148
use Psr\EventDispatcher\EventDispatcherInterface;
147149
use Psr\EventDispatcher\ListenerProviderInterface;
148150
use Psr\Http\Client\ClientInterface as PsrHttpClientInterface;
@@ -154,7 +156,7 @@
154156

155157
class DefaultInjectorBindings implements InjectorBindings
156158
{
157-
public function register(Horde_Injector $injector): void
159+
public function register(Injector $injector): void
158160
{
159161
$factories = [
160162
'Horde_ActiveSyncBackend' => 'Horde_Core_Factory_ActiveSyncBackend',
@@ -236,6 +238,7 @@ public function register(Horde_Injector $injector): void
236238
IdTokenBuilder::class => OAuthIdTokenBuilderFactory::class,
237239
OAuthConsentMiddleware::class => OAuthConsentMiddlewareFactory::class,
238240
AuthIsGlobalAdmin::class => AuthIsGlobalAdminFactory::class,
241+
ErrorFilter::class => ErrorFilterFactory::class,
239242
'Horde_Service_Facebook' => 'Horde_Core_Factory_Facebook',
240243
'Horde_Service_Twitter' => 'Horde_Core_Factory_Twitter',
241244
'Horde_Service_UrlShortener' => 'Horde_Core_Factory_UrlShortener',

src/Factory/ApiRegistryFactory.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
use Horde\Core\Config\RegistryConfigLoader;
1010
use Horde\Rpc\Dispatch\ApiProvider;
1111
use Horde\Rpc\Dispatch\MethodInvoker;
12-
use Horde_Injector;
12+
use Horde\Injector\Injector;
1313
use Throwable;
1414

1515
/**
@@ -20,7 +20,7 @@
2020
*/
2121
class ApiRegistryFactory
2222
{
23-
public function create(Horde_Injector $injector): ApiRegistry
23+
public function create(Injector $injector): ApiRegistry
2424
{
2525
$registry = new ApiRegistry();
2626
$registryLoader = $injector->getInstance(RegistryConfigLoader::class);

src/Factory/ApplicationServiceFactory.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
use Horde\Core\Config\RegistryConfigLoader;
2020
use Horde\Core\Service\ApplicationService;
21-
use Horde_Injector;
21+
use Horde\Injector\Injector;
2222

2323
/**
2424
* Factory for ApplicationService
@@ -30,7 +30,7 @@
3030
*/
3131
class ApplicationServiceFactory
3232
{
33-
public function create(Horde_Injector $injector): ApplicationService
33+
public function create(Injector $injector): ApplicationService
3434
{
3535
$registryLoader = $injector->getInstance(RegistryConfigLoader::class);
3636
return new ApplicationService($registryLoader);

src/Factory/AuthBaseFactory.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@
2222

2323
use Horde_Auth_Base;
2424
use Horde_Core_Factory_Injector;
25-
use Horde_Injector;
25+
use Horde\Injector\Injector;
2626

2727
class AuthBaseFactory extends Horde_Core_Factory_Injector
2828
{
29-
public function create(Horde_Injector $injector): Horde_Auth_Base
29+
public function create(Injector $injector): Horde_Auth_Base
3030
{
3131
return $injector->getInstance('Horde_Core_Factory_Auth')->create();
3232
}

src/Factory/AuthIsGlobalAdminFactory.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@
1717

1818
use Horde\Core\Config\ConfigLoader;
1919
use Horde\Core\Middleware\AuthIsGlobalAdmin;
20-
use Horde_Injector;
20+
use Horde\Injector\Injector;
2121

2222
class AuthIsGlobalAdminFactory
2323
{
24-
public function create(Horde_Injector $injector): AuthIsGlobalAdmin
24+
public function create(Injector $injector): AuthIsGlobalAdmin
2525
{
2626
$loader = $injector->getInstance(ConfigLoader::class);
2727
$state = $loader->load('horde');

src/Factory/AuthLinkRepositoryFactory.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
use Horde\Db\Adapter;
2020
use Horde\Horde\Service\AuthLinkRepository;
2121
use Horde\Horde\Service\SqlAuthLinkRepository;
22-
use Horde_Injector;
22+
use Horde\Injector\Injector;
2323
use Throwable;
2424

2525
/**
@@ -30,7 +30,7 @@
3030
*/
3131
class AuthLinkRepositoryFactory
3232
{
33-
public function create(Horde_Injector $injector): AuthLinkRepository
33+
public function create(Injector $injector): AuthLinkRepository
3434
{
3535
try {
3636
$db = $injector->getInstance(Adapter::class);

src/Factory/AuthServiceFactory.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
use Horde\Core\Service\HordeDbService;
3030
use Horde\Imap\Client\ConnectionConfig;
3131
use Horde\Imap\Client\SecureMode;
32-
use Horde_Injector;
32+
use Horde\Injector\Injector;
3333
use Horde_Ldap;
3434
use RuntimeException;
3535

@@ -39,7 +39,7 @@
3939
*/
4040
class AuthServiceFactory
4141
{
42-
public function create(Horde_Injector $injector): AuthService
42+
public function create(Injector $injector): AuthService
4343
{
4444
$loader = $injector->getInstance(ConfigLoader::class);
4545
$state = $loader->load('horde');
@@ -54,7 +54,7 @@ public function create(Horde_Injector $injector): AuthService
5454
return new AuthService($provider, $policy, $identityBridge);
5555
}
5656

57-
private function buildProvider(string $driver, array $params, Horde_Injector $injector): CredentialProvider
57+
private function buildProvider(string $driver, array $params, Injector $injector): CredentialProvider
5858
{
5959
return match ($driver) {
6060
'sql', 'auto' => $this->createSqlProvider($params, $injector),
@@ -65,7 +65,7 @@ private function buildProvider(string $driver, array $params, Horde_Injector $in
6565
};
6666
}
6767

68-
private function buildPolicy(array $params, Horde_Injector $injector): AccessPolicy
68+
private function buildPolicy(array $params, Injector $injector): AccessPolicy
6969
{
7070
$loginBlock = $params['login_block'] ?? false;
7171

@@ -85,7 +85,7 @@ private function buildPolicy(array $params, Horde_Injector $injector): AccessPol
8585
return new CompoundPolicy($lockout);
8686
}
8787

88-
private function createSqlProvider(array $params, Horde_Injector $injector): Sql
88+
private function createSqlProvider(array $params, Injector $injector): Sql
8989
{
9090
$dbService = $injector->getInstance(HordeDbService::class);
9191

@@ -99,7 +99,7 @@ private function createSqlProvider(array $params, Horde_Injector $injector): Sql
9999
);
100100
}
101101

102-
private function createLdapProvider(array $params, Horde_Injector $injector): Ldap
102+
private function createLdapProvider(array $params, Injector $injector): Ldap
103103
{
104104
$ldap = $injector->getInstance(Horde_Ldap::class);
105105

@@ -113,7 +113,7 @@ private function createLdapProvider(array $params, Horde_Injector $injector): Ld
113113
);
114114
}
115115

116-
private function createImapProvider(array $params, Horde_Injector $injector): Imap
116+
private function createImapProvider(array $params, Injector $injector): Imap
117117
{
118118
$hostspec = $params['hostspec'] ?? 'localhost';
119119
$port = isset($params['port']) ? (int) $params['port'] : null;
@@ -133,7 +133,7 @@ private function createImapProvider(array $params, Horde_Injector $injector): Im
133133
);
134134
}
135135

136-
private function createCompositeProvider(array $params, Horde_Injector $injector): CredentialProviderRegistry
136+
private function createCompositeProvider(array $params, Injector $injector): CredentialProviderRegistry
137137
{
138138
$providers = [];
139139

src/Factory/AuthStorageFactory.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,22 @@
1818
use Horde\Core\Auth\Storage\HistoryAttemptTracker;
1919
use Horde\Core\Auth\Storage\HordeLockAdapter;
2020
use Horde_History;
21-
use Horde_Injector;
21+
use Horde\Injector\Injector;
2222
use Horde_Lock;
2323

2424
/**
2525
* Factory for auth-related storage adapters.
2626
*/
2727
class AuthStorageFactory
2828
{
29-
public function createLockManager(Horde_Injector $injector): LockManager
29+
public function createLockManager(Injector $injector): LockManager
3030
{
3131
$lock = $injector->getInstance(Horde_Lock::class);
3232

3333
return new HordeLockAdapter($lock);
3434
}
3535

36-
public function createAttemptTracker(Horde_Injector $injector): LoginAttemptTracker
36+
public function createAttemptTracker(Injector $injector): LoginAttemptTracker
3737
{
3838
$history = $injector->getInstance(Horde_History::class);
3939

src/Factory/CheckCredentialsFactory.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@
1515

1616
use Horde\Core\Auth\AuthService;
1717
use Horde\Core\Middleware\CheckCredentials;
18-
use Horde_Injector;
18+
use Horde\Injector\Injector;
1919

2020
class CheckCredentialsFactory
2121
{
22-
public function create(Horde_Injector $injector): CheckCredentials
22+
public function create(Injector $injector): CheckCredentials
2323
{
2424
$authService = $injector->getInstance(AuthService::class);
2525

src/Factory/ConfigLoaderFactory.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
use Horde\Core\Config\ConfigLoader;
2020
use Horde\Core\Config\ConfigMetadataProvider;
2121
use Horde\Core\Config\Vhost;
22-
use Horde_Injector;
22+
use Horde\Injector\Injector;
2323
use Exception;
2424

2525
/**
@@ -37,10 +37,10 @@ class ConfigLoaderFactory
3737
/**
3838
* Create ConfigLoader instance
3939
*
40-
* @param Horde_Injector $injector Dependency injector
40+
* @param Injector $injector Dependency injector
4141
* @return ConfigLoader Global config loader for all apps
4242
*/
43-
public function create(Horde_Injector $injector): ConfigLoader
43+
public function create(Injector $injector): ConfigLoader
4444
{
4545
// Try to get metadata provider if available
4646
$metadataProvider = null;

0 commit comments

Comments
 (0)