mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-29 10:12:41 +01:00
Fix PHP 8.1 "strlen(null)" exceptions blocking account registration with custom OAuth provider after redirect
Summary: `strlen()` was used in Phabricator to check if a generic value is a non-empty string. This behavior is deprecated since PHP 8.1. Phorge adopts `phutil_nonempty_string()` as a replacement. Note: this may highlight other absurd input values that might be worth correcting instead of just ignoring. If phutil_nonempty_string() throws an exception in your instance, report it to Phorge to evaluate and fix that specific corner case. ``` EXCEPTION: (RuntimeException) strlen(): Passing null to parameter #1 ($string) of type string is deprecated at [<arcanist>/src/error/PhutilErrorHandler.php:261] arcanist(), ava(), phorge(), wmf-ext-misc() #0 <#2> PhutilErrorHandler::handleError(integer, string, string, integer) called at [<phorge>/applications/auth/provider/PhabricatorOAuth1AuthProvider.php:70] ``` ``` EXCEPTION: (RuntimeException) strlen(): Passing null to parameter #1 ($string) of type string is deprecated at [<arcanist>/src/error/PhutilErrorHandler.php:261] arcanist(), ava(), phorge(), wmf-ext-misc() #0 <#2> PhutilErrorHandler::handleError(integer, string, string, integer) called at [<phorge>/applications/auth/view/PhabricatorAuthAccountView.php:32] ``` Closes T15590 Test Plan: * As an admin, set up custom "MediaWiki" OAuth provider from from https://gitlab.wikimedia.org/-/ide/project/repos/phabricator/extensions/edit/wmf/stable/-/src/oauth/ * As an admin, apply D25373 * As a user, go to `/auth/login/mediawiki:whatever/` * Select login button * Allow authentication on third-party site * Get redirected to Phorge instance Phorge user account registration page "Create a New Account" at `/auth/register/abcdefghijklmnopqrstuvwxyz0123456/` now renders as expected, instead of displaying errors only. Reviewers: O1 Blessed Committers, Matthew Reviewed By: O1 Blessed Committers, Matthew Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno Maniphest Tasks: T15590 Differential Revision: https://we.phorge.it/D25375
This commit is contained in:
parent
a2e8ab3180
commit
98dfac53ba
2 changed files with 6 additions and 5 deletions
|
@ -67,7 +67,7 @@ abstract class PhabricatorOAuth1AuthProvider
|
||||||
}
|
}
|
||||||
|
|
||||||
$denied = $request->getStr('denied');
|
$denied = $request->getStr('denied');
|
||||||
if (strlen($denied)) {
|
if ($denied) {
|
||||||
// Twitter indicates that the user cancelled the login attempt by
|
// Twitter indicates that the user cancelled the login attempt by
|
||||||
// returning "denied" as a parameter.
|
// returning "denied" as a parameter.
|
||||||
throw new PhutilAuthUserAbortedException();
|
throw new PhutilAuthUserAbortedException();
|
||||||
|
|
|
@ -29,13 +29,14 @@ final class PhabricatorAuthAccountView extends AphrontView {
|
||||||
$realname = $account->getRealName();
|
$realname = $account->getRealName();
|
||||||
|
|
||||||
$use_name = null;
|
$use_name = null;
|
||||||
if (strlen($dispname)) {
|
if (phutil_nonempty_string($dispname)) {
|
||||||
$use_name = $dispname;
|
$use_name = $dispname;
|
||||||
} else if (strlen($username) && strlen($realname)) {
|
} else if (phutil_nonempty_string($username) &&
|
||||||
|
phutil_nonempty_string($realname)) {
|
||||||
$use_name = $username.' ('.$realname.')';
|
$use_name = $username.' ('.$realname.')';
|
||||||
} else if (strlen($username)) {
|
} else if (phutil_nonempty_string($username)) {
|
||||||
$use_name = $username;
|
$use_name = $username;
|
||||||
} else if (strlen($realname)) {
|
} else if (phutil_nonempty_string($realname)) {
|
||||||
$use_name = $realname;
|
$use_name = $realname;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue