ILIAS  trunk Revision v12.0_alpha-377-g3641b37b9db
ILIAS\ApacheAuth\UsernameProvider\UsernameResolver Class Reference

Resolves a username by selecting the first provider (by descending priority) that returns a non-empty/non-null value for getUsername(). More...

+ Collaboration diagram for ILIAS\ApacheAuth\UsernameProvider\UsernameResolver:

Public Member Functions

 __construct (array $providers, private readonly \ilLogger $logger)
 
 resolve (ServerRequestInterface $request)
 

Private Attributes

array $providers
 

Detailed Description

Resolves a username by selecting the first provider (by descending priority) that returns a non-empty/non-null value for getUsername().

Definition at line 29 of file UsernameResolver.php.

Constructor & Destructor Documentation

◆ __construct()

ILIAS\ApacheAuth\UsernameProvider\UsernameResolver::__construct ( array  $providers,
private readonly \ilLogger  $logger 
)
Parameters
list<UsernameProvider>$providers

Definition at line 37 of file UsernameResolver.php.

38 {
39 if (!array_is_list($providers)) {
40 throw new \InvalidArgumentException('Providers must be passed as list');
41 }
42
43 $this->providers = $providers;
44
45 // Sort by descending priority, this also ensures the expected type of the elements
46 usort(
47 $this->providers,
48 static fn(UsernameProvider $a, UsernameProvider $b): int => $b->getPriority() <=> $a->getPriority()
49 );
50 }
$a
thx to https://mlocati.github.io/php-cs-fixer-configurator for the examples

References Vendor\Package\$a, Vendor\Package\$b, and ILIAS\ApacheAuth\UsernameProvider\UsernameResolver\$providers.

Member Function Documentation

◆ resolve()

ILIAS\ApacheAuth\UsernameProvider\UsernameResolver::resolve ( ServerRequestInterface  $request)

Definition at line 52 of file UsernameResolver.php.

52 : UsernameInterface
53 {
54 foreach ($this->providers as $provider) {
55 $this->logger->debug('Trying to resolve username using provider {provider} with prio {priority}', [
56 'provider' => $provider::class,
57 'priority' => $provider->getPriority(),
58 ]);
59
60 $username = $provider->getUsername($request);
61
62 if (!$username->isEmpty()) {
63 $this->logger->debug('Username resolved to {username} by provider {provider}', [
64 'username' => $username->asString(),
65 'provider' => $provider::class,
66 ]);
67
68 return $username;
69 }
70
71 $this->logger->debug('Provider {provider} could not resolve a username', [
72 'provider' => $provider::class,
73 ]);
74 }
75
76 $this->logger->debug('No username could be resolved by any provider, returning NullUsername');
77
78 return new NullUsername();
79 }
$provider
Definition: ltitoken.php:80

References $provider, and ILIAS\Repository\logger().

+ Here is the call graph for this function:

Field Documentation

◆ $providers

array ILIAS\ApacheAuth\UsernameProvider\UsernameResolver::$providers
private

The documentation for this class was generated from the following file: