auth: Use phan templates for getRequestByClass

Phan is clever enough to understand when the return value depends on the
name of the string passed in. This avoids lots of @phan-var annotations
in all subclasses.

Note that PHPCS rejects @template, ref T232256.

Change-Id: I7b7c7fae9c80320cad41bedc2972a3a5e22e19b0
This commit is contained in:
Daimona Eaytoy 2019-09-07 15:33:24 +02:00
parent cd898eb4ed
commit 5485a3dda0
2 changed files with 7 additions and 0 deletions

View file

@ -246,13 +246,18 @@ abstract class AuthenticationRequest {
}
/**
* @codingStandardsIgnoreStart
* @template T
* @codingStandardsIgnoreEnd
* Select a request by class name.
* @param AuthenticationRequest[] $reqs
* @param string $class Class name
* @phan-param class-string<T> $class
* @param bool $allowSubclasses If true, also returns any request that's a subclass of the given
* class.
* @return AuthenticationRequest|null Returns null if there is not exactly
* one matching request.
* @phan-return T|null
*/
public static function getRequestByClass( array $reqs, $class, $allowSubclasses = false ) {
$requests = array_filter( $reqs, function ( $req ) use ( $class, $allowSubclasses ) {

View file

@ -96,7 +96,9 @@ class ResetPasswordSecondaryAuthenticationProvider extends AbstractSecondaryAuth
}
}
/** @var PasswordAuthenticationRequest $needReq */
$needReq = $data->req ?? new PasswordAuthenticationRequest();
'@phan-var PasswordAuthenticationRequest $needReq';
if ( !$needReq->action ) {
$needReq->action = AuthManager::ACTION_CHANGE;
}