1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-26 00:32:42 +01:00

Centralize "this is the current user for the request" code

Summary:
Ref T11098. This primarily fixes Conduit calls to `*.edit` methods failing when trying to access user preferences.

(The actual access is a little weird, since it seems like we're building some UI stuff inside a policy query, but that's an issue for another time.)

To fix this, consolidate the "we're about to run some kind of request with this user" code and run it consistently for web, conduit, and SSH sessions.

Additionally, make sure we swap things to the user's translation.

Test Plan:
  - Ran `maniphest.edit` via `arc call-conduit`, no more settings exception.
  - Set translation to ALL CAPS, got all caps output from `ssh` and Conduit.

Reviewers: avivey, chad

Reviewed By: chad

Maniphest Tasks: T11098

Differential Revision: https://secure.phabricator.com/D16066
This commit is contained in:
epriestley 2016-06-07 06:52:56 -07:00
parent 8a7ded6129
commit 814fa135b0
4 changed files with 17 additions and 2 deletions

View file

@ -103,6 +103,9 @@ try {
'Invalid username ("%s"). There is no user with this username.', 'Invalid username ("%s"). There is no user with this username.',
$user_name)); $user_name));
} }
id(new PhabricatorAuthSessionEngine())
->willServeRequestForUser($user);
} else if (strlen($device_name)) { } else if (strlen($device_name)) {
if (!$remote_address) { if (!$remote_address) {
throw new Exception( throw new Exception(

View file

@ -164,7 +164,6 @@ final class PhabricatorAuthSessionEngine extends Phobject {
$cache_raw = $this->filterRawCacheData($user, $types_map, $cache_raw); $cache_raw = $this->filterRawCacheData($user, $types_map, $cache_raw);
$user->attachRawCacheData($cache_raw); $user->attachRawCacheData($cache_raw);
$user->setAllowInlineCacheGeneration(true);
switch ($session_type) { switch ($session_type) {
case PhabricatorAuthSession::TYPE_WEB: case PhabricatorAuthSession::TYPE_WEB:
@ -832,4 +831,12 @@ final class PhabricatorAuthSessionEngine extends Phobject {
return $cache_raw; return $cache_raw;
} }
public function willServeRequestForUser(PhabricatorUser $user) {
// We allow the login user to generate any missing cache data inline.
$user->setAllowInlineCacheGeneration(true);
// Switch to the user's translation.
PhabricatorEnv::setLocaleCode($user->getTranslation());
}
} }

View file

@ -104,7 +104,8 @@ abstract class PhabricatorController extends AphrontController {
$request->setUser($user); $request->setUser($user);
} }
PhabricatorEnv::setLocaleCode($user->getTranslation()); id(new PhabricatorAuthSessionEngine())
->willServeRequestForUser($user);
if (PhabricatorEnv::getEnvConfig('darkconsole.enabled')) { if (PhabricatorEnv::getEnvConfig('darkconsole.enabled')) {
$dark_console = PhabricatorDarkConsoleSetting::SETTINGKEY; $dark_console = PhabricatorDarkConsoleSetting::SETTINGKEY;

View file

@ -487,6 +487,10 @@ final class PhabricatorConduitAPIController
} }
$request->setUser($user); $request->setUser($user);
id(new PhabricatorAuthSessionEngine())
->willServeRequestForUser($user);
return null; return null;
} }