/** Indicates that the request is required by a primary authentication
* provider. Since the user can choose which primary to authenticate with,
- * the request might or might not end up being actually required. */
+ * the request might or might not end up being actually required.
+ */
const PRIMARY_REQUIRED = 2;
/** @var string|null The AuthManager::ACTION_* constant this request was
public $action = null;
/** @var int For login, continue, and link actions, one of self::OPTIONAL,
- * self::REQUIRED, or self::PRIMARY_REQUIRED */
+ * self::REQUIRED, or self::PRIMARY_REQUIRED
+ */
public $required = self::REQUIRED;
/** @var string|null Return-to URL, in case of redirect */
public $returnToUrl = null;
/** @var string|null Username. See AuthenticationProvider::getAuthenticationRequests()
- * for details of what this means and how it behaves. */
+ * for details of what this means and how it behaves.
+ */
public $username = null;
/**
* a 'password' field).
*
* @return array As above
+ * @phan-return array<string,array{type:string,options?:array,value?:string,label:Message,help:Message,optional?:bool,sensitive?:bool,skippable?:bool}>
*/
abstract public function getFieldInfo();
* @param AuthenticationRequest[] $reqs
* @return array
* @throws \UnexpectedValueException If fields cannot be merged
+ * @suppress PhanTypeInvalidDimOffset
*/
public static function mergeFieldInfo( array $reqs ) {
$merged = [];
}
$options['sensitive'] = !empty( $options['sensitive'] );
+ $type = $options['type'];
if ( !array_key_exists( $name, $merged ) ) {
$merged[$name] = $options;
- } elseif ( $merged[$name]['type'] !== $options['type'] ) {
+ } elseif ( $merged[$name]['type'] !== $type ) {
throw new \UnexpectedValueException( "Field type conflict for \"$name\", " .
- "\"{$merged[$name]['type']}\" vs \"{$options['type']}\""
+ "\"{$merged[$name]['type']}\" vs \"$type\""
);
} else {
if ( isset( $options['options'] ) ) {
* @return AuthenticationRequest
*/
public static function __set_state( $data ) {
- // @phan-suppress-next-line PhanTypeInstantiateAbstract
+ // @phan-suppress-next-line PhanTypeInstantiateAbstractStatic
$ret = new static();
foreach ( $data as $k => $v ) {
$ret->$k = $v;