diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -2241,6 +2241,15 @@ 'PhabricatorAuthChangePasswordAction' => 'applications/auth/action/PhabricatorAuthChangePasswordAction.php', 'PhabricatorAuthConduitAPIMethod' => 'applications/auth/conduit/PhabricatorAuthConduitAPIMethod.php', 'PhabricatorAuthConduitTokenRevoker' => 'applications/auth/revoker/PhabricatorAuthConduitTokenRevoker.php', + 'PhabricatorAuthConfigAutoLoginTransaction' => 'applications/auth/xaction/PhabricatorAuthConfigAutoLoginTransaction.php', + 'PhabricatorAuthConfigEnableTransaction' => 'applications/auth/xaction/PhabricatorAuthConfigEnableTransaction.php', + 'PhabricatorAuthConfigLinkTransaction' => 'applications/auth/xaction/PhabricatorAuthConfigLinkTransaction.php', + 'PhabricatorAuthConfigLoginTransaction' => 'applications/auth/xaction/PhabricatorAuthConfigLoginTransaction.php', + 'PhabricatorAuthConfigPropertyTransaction' => 'applications/auth/xaction/PhabricatorAuthConfigPropertyTransaction.php', + 'PhabricatorAuthConfigRegistrationTransaction' => 'applications/auth/xaction/PhabricatorAuthConfigRegistrationTransaction.php', + 'PhabricatorAuthConfigTransactionType' => 'applications/auth/xaction/PhabricatorAuthConfigTransactionType.php', + 'PhabricatorAuthConfigTrustEmailsTransaction' => 'applications/auth/xaction/PhabricatorAuthConfigTrustEmailsTransaction.php', + 'PhabricatorAuthConfigUnlinkTransaction' => 'applications/auth/xaction/PhabricatorAuthConfigUnlinkTransaction.php', 'PhabricatorAuthConfirmLinkController' => 'applications/auth/controller/PhabricatorAuthConfirmLinkController.php', 'PhabricatorAuthContactNumber' => 'applications/auth/storage/PhabricatorAuthContactNumber.php', 'PhabricatorAuthContactNumberController' => 'applications/auth/controller/contact/PhabricatorAuthContactNumberController.php', @@ -8187,6 +8196,15 @@ 'PhabricatorAuthChangePasswordAction' => 'PhabricatorSystemAction', 'PhabricatorAuthConduitAPIMethod' => 'ConduitAPIMethod', 'PhabricatorAuthConduitTokenRevoker' => 'PhabricatorAuthRevoker', + 'PhabricatorAuthConfigAutoLoginTransaction' => 'PhabricatorAuthConfigTransactionType', + 'PhabricatorAuthConfigEnableTransaction' => 'PhabricatorAuthConfigTransactionType', + 'PhabricatorAuthConfigLinkTransaction' => 'PhabricatorAuthConfigTransactionType', + 'PhabricatorAuthConfigLoginTransaction' => 'PhabricatorAuthConfigTransactionType', + 'PhabricatorAuthConfigPropertyTransaction' => 'PhabricatorAuthConfigTransactionType', + 'PhabricatorAuthConfigRegistrationTransaction' => 'PhabricatorAuthConfigTransactionType', + 'PhabricatorAuthConfigTransactionType' => 'PhabricatorModularTransactionType', + 'PhabricatorAuthConfigTrustEmailsTransaction' => 'PhabricatorAuthConfigTransactionType', + 'PhabricatorAuthConfigUnlinkTransaction' => 'PhabricatorAuthConfigTransactionType', 'PhabricatorAuthConfirmLinkController' => 'PhabricatorAuthController', 'PhabricatorAuthContactNumber' => array( 'PhabricatorAuthDAO', @@ -8355,7 +8373,7 @@ 'PhabricatorAuthProviderConfigController' => 'PhabricatorAuthProviderController', 'PhabricatorAuthProviderConfigEditor' => 'PhabricatorApplicationTransactionEditor', 'PhabricatorAuthProviderConfigQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', - 'PhabricatorAuthProviderConfigTransaction' => 'PhabricatorApplicationTransaction', + 'PhabricatorAuthProviderConfigTransaction' => 'PhabricatorModularTransaction', 'PhabricatorAuthProviderConfigTransactionQuery' => 'PhabricatorApplicationTransactionQuery', 'PhabricatorAuthProviderController' => 'PhabricatorAuthController', 'PhabricatorAuthProviderViewController' => 'PhabricatorAuthProviderConfigController', diff --git a/src/applications/auth/controller/config/PhabricatorAuthDisableController.php b/src/applications/auth/controller/config/PhabricatorAuthDisableController.php --- a/src/applications/auth/controller/config/PhabricatorAuthDisableController.php +++ b/src/applications/auth/controller/config/PhabricatorAuthDisableController.php @@ -32,7 +32,7 @@ $xactions[] = id(new PhabricatorAuthProviderConfigTransaction()) ->setTransactionType( - PhabricatorAuthProviderConfigTransaction::TYPE_ENABLE) + PhabricatorAuthConfigEnableTransaction::TRANSACTIONTYPE) ->setNewValue((int)$is_enable); $editor = id(new PhabricatorAuthProviderConfigEditor()) diff --git a/src/applications/auth/controller/config/PhabricatorAuthEditController.php b/src/applications/auth/controller/config/PhabricatorAuthEditController.php --- a/src/applications/auth/controller/config/PhabricatorAuthEditController.php +++ b/src/applications/auth/controller/config/PhabricatorAuthEditController.php @@ -109,40 +109,42 @@ $xactions[] = id(new PhabricatorAuthProviderConfigTransaction()) ->setTransactionType( - PhabricatorAuthProviderConfigTransaction::TYPE_LOGIN) + PhabricatorAuthConfigLoginTransaction::TRANSACTIONTYPE) ->setNewValue($request->getInt('allowLogin', 0)); $xactions[] = id(new PhabricatorAuthProviderConfigTransaction()) ->setTransactionType( - PhabricatorAuthProviderConfigTransaction::TYPE_REGISTRATION) + PhabricatorAuthConfigRegistrationTransaction::TRANSACTIONTYPE) ->setNewValue($request->getInt('allowRegistration', 0)); $xactions[] = id(new PhabricatorAuthProviderConfigTransaction()) ->setTransactionType( - PhabricatorAuthProviderConfigTransaction::TYPE_LINK) + PhabricatorAuthConfigLinkTransaction::TRANSACTIONTYPE) ->setNewValue($request->getInt('allowLink', 0)); $xactions[] = id(new PhabricatorAuthProviderConfigTransaction()) ->setTransactionType( - PhabricatorAuthProviderConfigTransaction::TYPE_UNLINK) + PhabricatorAuthConfigUnlinkTransaction::TRANSACTIONTYPE) ->setNewValue($request->getInt('allowUnlink', 0)); - $xactions[] = id(new PhabricatorAuthProviderConfigTransaction()) - ->setTransactionType( - PhabricatorAuthProviderConfigTransaction::TYPE_TRUST_EMAILS) - ->setNewValue($request->getInt('trustEmails', 0)); + if ($provider->shouldAllowEmailTrustConfiguration()) { + $xactions[] = id(new PhabricatorAuthProviderConfigTransaction()) + ->setTransactionType( + PhabricatorAuthConfigTrustEmailsTransaction::TRANSACTIONTYPE) + ->setNewValue($request->getInt('trustEmails', 0)); + } if ($provider->supportsAutoLogin()) { $xactions[] = id(new PhabricatorAuthProviderConfigTransaction()) ->setTransactionType( - PhabricatorAuthProviderConfigTransaction::TYPE_AUTO_LOGIN) + PhabricatorAuthConfigAutoLoginTransaction::TRANSACTIONTYPE) ->setNewValue($request->getInt('autoLogin', 0)); } foreach ($properties as $key => $value) { $xactions[] = id(new PhabricatorAuthProviderConfigTransaction()) ->setTransactionType( - PhabricatorAuthProviderConfigTransaction::TYPE_PROPERTY) + PhabricatorAuthConfigPropertyTransaction::TRANSACTIONTYPE) ->setMetadataValue('auth:property', $key) ->setNewValue($value); } diff --git a/src/applications/auth/editor/PhabricatorAuthProviderConfigEditor.php b/src/applications/auth/editor/PhabricatorAuthProviderConfigEditor.php --- a/src/applications/auth/editor/PhabricatorAuthProviderConfigEditor.php +++ b/src/applications/auth/editor/PhabricatorAuthProviderConfigEditor.php @@ -11,120 +11,6 @@ return pht('Auth Providers'); } - public function getTransactionTypes() { - $types = parent::getTransactionTypes(); - - $types[] = PhabricatorAuthProviderConfigTransaction::TYPE_ENABLE; - $types[] = PhabricatorAuthProviderConfigTransaction::TYPE_LOGIN; - $types[] = PhabricatorAuthProviderConfigTransaction::TYPE_REGISTRATION; - $types[] = PhabricatorAuthProviderConfigTransaction::TYPE_LINK; - $types[] = PhabricatorAuthProviderConfigTransaction::TYPE_UNLINK; - $types[] = PhabricatorAuthProviderConfigTransaction::TYPE_TRUST_EMAILS; - $types[] = PhabricatorAuthProviderConfigTransaction::TYPE_AUTO_LOGIN; - $types[] = PhabricatorAuthProviderConfigTransaction::TYPE_PROPERTY; - - return $types; - } - - protected function getCustomTransactionOldValue( - PhabricatorLiskDAO $object, - PhabricatorApplicationTransaction $xaction) { - - switch ($xaction->getTransactionType()) { - case PhabricatorAuthProviderConfigTransaction::TYPE_ENABLE: - if ($object->getIsEnabled() === null) { - return null; - } else { - return (int)$object->getIsEnabled(); - } - case PhabricatorAuthProviderConfigTransaction::TYPE_LOGIN: - return (int)$object->getShouldAllowLogin(); - case PhabricatorAuthProviderConfigTransaction::TYPE_REGISTRATION: - return (int)$object->getShouldAllowRegistration(); - case PhabricatorAuthProviderConfigTransaction::TYPE_LINK: - return (int)$object->getShouldAllowLink(); - case PhabricatorAuthProviderConfigTransaction::TYPE_UNLINK: - return (int)$object->getShouldAllowUnlink(); - case PhabricatorAuthProviderConfigTransaction::TYPE_TRUST_EMAILS: - return (int)$object->getShouldTrustEmails(); - case PhabricatorAuthProviderConfigTransaction::TYPE_AUTO_LOGIN: - return (int)$object->getShouldAutoLogin(); - case PhabricatorAuthProviderConfigTransaction::TYPE_PROPERTY: - $key = $xaction->getMetadataValue( - PhabricatorAuthProviderConfigTransaction::PROPERTY_KEY); - return $object->getProperty($key); - } - } - - protected function getCustomTransactionNewValue( - PhabricatorLiskDAO $object, - PhabricatorApplicationTransaction $xaction) { - - switch ($xaction->getTransactionType()) { - case PhabricatorAuthProviderConfigTransaction::TYPE_ENABLE: - case PhabricatorAuthProviderConfigTransaction::TYPE_LOGIN: - case PhabricatorAuthProviderConfigTransaction::TYPE_REGISTRATION: - case PhabricatorAuthProviderConfigTransaction::TYPE_LINK: - case PhabricatorAuthProviderConfigTransaction::TYPE_UNLINK: - case PhabricatorAuthProviderConfigTransaction::TYPE_TRUST_EMAILS: - case PhabricatorAuthProviderConfigTransaction::TYPE_AUTO_LOGIN: - case PhabricatorAuthProviderConfigTransaction::TYPE_PROPERTY: - return $xaction->getNewValue(); - } - } - - protected function applyCustomInternalTransaction( - PhabricatorLiskDAO $object, - PhabricatorApplicationTransaction $xaction) { - $v = $xaction->getNewValue(); - switch ($xaction->getTransactionType()) { - case PhabricatorAuthProviderConfigTransaction::TYPE_ENABLE: - return $object->setIsEnabled($v); - case PhabricatorAuthProviderConfigTransaction::TYPE_LOGIN: - return $object->setShouldAllowLogin($v); - case PhabricatorAuthProviderConfigTransaction::TYPE_REGISTRATION: - return $object->setShouldAllowRegistration($v); - case PhabricatorAuthProviderConfigTransaction::TYPE_LINK: - return $object->setShouldAllowLink($v); - case PhabricatorAuthProviderConfigTransaction::TYPE_UNLINK: - return $object->setShouldAllowUnlink($v); - case PhabricatorAuthProviderConfigTransaction::TYPE_TRUST_EMAILS: - return $object->setShouldTrustEmails($v); - case PhabricatorAuthProviderConfigTransaction::TYPE_AUTO_LOGIN: - return $object->setShouldAutoLogin($v); - case PhabricatorAuthProviderConfigTransaction::TYPE_PROPERTY: - $key = $xaction->getMetadataValue( - PhabricatorAuthProviderConfigTransaction::PROPERTY_KEY); - return $object->setProperty($key, $v); - } - } - - protected function applyCustomExternalTransaction( - PhabricatorLiskDAO $object, - PhabricatorApplicationTransaction $xaction) { - return; - } - - protected function mergeTransactions( - PhabricatorApplicationTransaction $u, - PhabricatorApplicationTransaction $v) { - - $type = $u->getTransactionType(); - switch ($type) { - case PhabricatorAuthProviderConfigTransaction::TYPE_ENABLE: - case PhabricatorAuthProviderConfigTransaction::TYPE_LOGIN: - case PhabricatorAuthProviderConfigTransaction::TYPE_REGISTRATION: - case PhabricatorAuthProviderConfigTransaction::TYPE_LINK: - case PhabricatorAuthProviderConfigTransaction::TYPE_UNLINK: - case PhabricatorAuthProviderConfigTransaction::TYPE_TRUST_EMAILS: - case PhabricatorAuthProviderConfigTransaction::TYPE_AUTO_LOGIN: - // For these types, last transaction wins. - return $v; - } - - return parent::mergeTransactions($u, $v); - } - protected function validateAllTransactions( PhabricatorLiskDAO $object, array $xactions) { diff --git a/src/applications/auth/storage/PhabricatorAuthProviderConfigTransaction.php b/src/applications/auth/storage/PhabricatorAuthProviderConfigTransaction.php --- a/src/applications/auth/storage/PhabricatorAuthProviderConfigTransaction.php +++ b/src/applications/auth/storage/PhabricatorAuthProviderConfigTransaction.php @@ -1,16 +1,7 @@ getOldValue(); - $new = $this->getNewValue(); - - switch ($this->getTransactionType()) { - case self::TYPE_ENABLE: - if ($new) { - return 'fa-check'; - } else { - return 'fa-ban'; - } - } - - return parent::getIcon(); - } - - public function getColor() { - $old = $this->getOldValue(); - $new = $this->getNewValue(); - - switch ($this->getTransactionType()) { - case self::TYPE_ENABLE: - if ($new) { - return 'green'; - } else { - return 'indigo'; - } - } - - return parent::getColor(); - } - - public function getTitle() { - $author_phid = $this->getAuthorPHID(); - - $old = $this->getOldValue(); - $new = $this->getNewValue(); - - switch ($this->getTransactionType()) { - case self::TYPE_ENABLE: - if ($old === null) { - return pht( - '%s created this provider.', - $this->renderHandleLink($author_phid)); - } else if ($new) { - return pht( - '%s enabled this provider.', - $this->renderHandleLink($author_phid)); - } else { - return pht( - '%s disabled this provider.', - $this->renderHandleLink($author_phid)); - } - break; - case self::TYPE_LOGIN: - if ($new) { - return pht( - '%s enabled login.', - $this->renderHandleLink($author_phid)); - } else { - return pht( - '%s disabled login.', - $this->renderHandleLink($author_phid)); - } - break; - case self::TYPE_REGISTRATION: - if ($new) { - return pht( - '%s enabled registration.', - $this->renderHandleLink($author_phid)); - } else { - return pht( - '%s disabled registration.', - $this->renderHandleLink($author_phid)); - } - break; - case self::TYPE_LINK: - if ($new) { - return pht( - '%s enabled account linking.', - $this->renderHandleLink($author_phid)); - } else { - return pht( - '%s disabled account linking.', - $this->renderHandleLink($author_phid)); - } - break; - case self::TYPE_UNLINK: - if ($new) { - return pht( - '%s enabled account unlinking.', - $this->renderHandleLink($author_phid)); - } else { - return pht( - '%s disabled account unlinking.', - $this->renderHandleLink($author_phid)); - } - break; - case self::TYPE_TRUST_EMAILS: - if ($new) { - return pht( - '%s enabled email trust.', - $this->renderHandleLink($author_phid)); - } else { - return pht( - '%s disabled email trust.', - $this->renderHandleLink($author_phid)); - } - break; - case self::TYPE_AUTO_LOGIN: - if ($new) { - return pht( - '%s enabled auto login.', - $this->renderHandleLink($author_phid)); - } else { - return pht( - '%s disabled auto login.', - $this->renderHandleLink($author_phid)); - } - break; - case self::TYPE_PROPERTY: - $provider = $this->getProvider(); - if ($provider) { - $title = $provider->renderConfigPropertyTransactionTitle($this); - if (strlen($title)) { - return $title; - } - } - - return pht( - '%s edited a property of this provider.', - $this->renderHandleLink($author_phid)); - break; - } - - return parent::getTitle(); + public function getBaseTransactionClass() { + return 'PhabricatorAuthConfigTransactionType'; } } diff --git a/src/applications/auth/xaction/PhabricatorAuthConfigAutoLoginTransaction.php b/src/applications/auth/xaction/PhabricatorAuthConfigAutoLoginTransaction.php new file mode 100644 --- /dev/null +++ b/src/applications/auth/xaction/PhabricatorAuthConfigAutoLoginTransaction.php @@ -0,0 +1,44 @@ +getShouldAutoLogin(); + } + + public function applyInternalEffects($object, $value) { + $object->setShouldAutoLogin($value); + } + + public function getTitle() { + if ($this->getNewValue()) { + return pht('%s enabled auto login.', + $this->renderAuthor()); + } else { + return pht('%s disabled auto login.', + $this->renderAuthor()); + } + } + + public function validateTransactions($object, array $xactions) { + $errors = array(); + $provider = $object->getProvider(); + + foreach ($xactions as $xaction) { + if (!$provider->supportsAutoLogin()) { + $errors[] = $this->newInvalidError( + pht( + 'Authentication provider "%s" does not support auto login.', + get_class($provider)), + $xaction); + continue; + } + } + + return $errors; + } + +} diff --git a/src/applications/auth/xaction/PhabricatorAuthConfigEnableTransaction.php b/src/applications/auth/xaction/PhabricatorAuthConfigEnableTransaction.php new file mode 100644 --- /dev/null +++ b/src/applications/auth/xaction/PhabricatorAuthConfigEnableTransaction.php @@ -0,0 +1,42 @@ +getIsEnabled(); + } + + public function applyInternalEffects($object, $value) { + $object->setIsEnabled($value); + } + + public function getTitle() { + if ($this->getNewValue()) { + return pht('%s enabled this provider.', + $this->renderAuthor()); + } else { + return pht('%s disabled this provider.', + $this->renderAuthor()); + } + } + + public function getIcon() { + if ($this->getNewValue()) { + return 'fa-check'; + } else { + return 'fa-ban'; + } + } + + public function getColor() { + if ($this->getNewValue()) { + return 'green'; + } else { + return 'indigo'; + } + } + +} diff --git a/src/applications/auth/xaction/PhabricatorAuthConfigLinkTransaction.php b/src/applications/auth/xaction/PhabricatorAuthConfigLinkTransaction.php new file mode 100644 --- /dev/null +++ b/src/applications/auth/xaction/PhabricatorAuthConfigLinkTransaction.php @@ -0,0 +1,26 @@ +getShouldAllowLink(); + } + + public function applyInternalEffects($object, $value) { + $object->setShouldAllowLink($value); + } + + public function getTitle() { + if ($this->getNewValue()) { + return pht('%s enabled account linking.', + $this->renderAuthor()); + } else { + return pht('%s disabled account linking.', + $this->renderAuthor()); + } + } + +} diff --git a/src/applications/auth/xaction/PhabricatorAuthConfigLoginTransaction.php b/src/applications/auth/xaction/PhabricatorAuthConfigLoginTransaction.php new file mode 100644 --- /dev/null +++ b/src/applications/auth/xaction/PhabricatorAuthConfigLoginTransaction.php @@ -0,0 +1,26 @@ +getShouldAllowLogin(); + } + + public function applyInternalEffects($object, $value) { + $object->setShouldAllowLogin($value); + } + + public function getTitle() { + if ($this->getNewValue()) { + return pht('%s enabled login.', + $this->renderAuthor()); + } else { + return pht('%s disabled login.', + $this->renderAuthor()); + } + } + +} diff --git a/src/applications/auth/xaction/PhabricatorAuthConfigPropertyTransaction.php b/src/applications/auth/xaction/PhabricatorAuthConfigPropertyTransaction.php new file mode 100644 --- /dev/null +++ b/src/applications/auth/xaction/PhabricatorAuthConfigPropertyTransaction.php @@ -0,0 +1,35 @@ +getMetadataValue( + PhabricatorAuthProviderConfigTransaction::PROPERTY_KEY); + return $object->getProperty($key); + } + + public function applyInternalEffects($object, $value) { + $key = $this->getMetadataValue( + PhabricatorAuthProviderConfigTransaction::PROPERTY_KEY); + $object->setProperty($key, $value); + } + + public function getTitle() { + $provider = $this->getObject()->getProvider(); + if ($provider) { + $legacy_xaction = $this->getLegacyUnderlyingTransactionObject(); + $title = $provider->renderConfigPropertyTransactionTitle($legacy_xaction); + if (strlen($title)) { + return $title; + } + } + + return pht( + '%s edited a property of this provider.', + $this->renderAuthor()); + } + +} diff --git a/src/applications/auth/xaction/PhabricatorAuthConfigRegistrationTransaction.php b/src/applications/auth/xaction/PhabricatorAuthConfigRegistrationTransaction.php new file mode 100644 --- /dev/null +++ b/src/applications/auth/xaction/PhabricatorAuthConfigRegistrationTransaction.php @@ -0,0 +1,26 @@ +getShouldAllowRegistration(); + } + + public function applyInternalEffects($object, $value) { + $object->setShouldAllowRegistration($value); + } + + public function getTitle() { + if ($this->getNewValue()) { + return pht('%s enabled registration.', + $this->renderAuthor()); + } else { + return pht('%s disabled registration.', + $this->renderAuthor()); + } + } + +} diff --git a/src/applications/auth/xaction/PhabricatorAuthConfigTransactionType.php b/src/applications/auth/xaction/PhabricatorAuthConfigTransactionType.php new file mode 100644 --- /dev/null +++ b/src/applications/auth/xaction/PhabricatorAuthConfigTransactionType.php @@ -0,0 +1,4 @@ +getShouldTrustEmails(); + } + + public function applyInternalEffects($object, $value) { + $object->setShouldTrustEmails($value); + } + + public function getTitle() { + if ($this->getNewValue()) { + return pht('%s enabled email trust.', + $this->renderAuthor()); + } else { + return pht('%s disabled email trust.', + $this->renderAuthor()); + } + } + + public function validateTransactions($object, array $xactions) { + $errors = array(); + $provider = $object->getProvider(); + + foreach ($xactions as $xaction) { + if (!$provider->shouldAllowEmailTrustConfiguration()) { + $errors[] = $this->newInvalidError( + pht( + 'Authentication provider "%s" does not support trusting emails.', + get_class($provider)), + $xaction); + continue; + } + } + + return $errors; + } + +} diff --git a/src/applications/auth/xaction/PhabricatorAuthConfigUnlinkTransaction.php b/src/applications/auth/xaction/PhabricatorAuthConfigUnlinkTransaction.php new file mode 100644 --- /dev/null +++ b/src/applications/auth/xaction/PhabricatorAuthConfigUnlinkTransaction.php @@ -0,0 +1,26 @@ +getShouldAllowUnlink(); + } + + public function applyInternalEffects($object, $value) { + $object->setShouldAllowUnlink($value); + } + + public function getTitle() { + if ($this->getNewValue()) { + return pht('%s enabled account unlinking.', + $this->renderAuthor()); + } else { + return pht('%s disabled account unlinking.', + $this->renderAuthor()); + } + } + +} diff --git a/src/applications/transactions/storage/PhabricatorModularTransactionType.php b/src/applications/transactions/storage/PhabricatorModularTransactionType.php --- a/src/applications/transactions/storage/PhabricatorModularTransactionType.php +++ b/src/applications/transactions/storage/PhabricatorModularTransactionType.php @@ -116,6 +116,13 @@ return $this->storage; } + // TODO: This is a temporary hack to modularize authentication provider + // configuration without changing the method signature of + // PhabricatorAuthProvider->renderConfigPropertyTransactionTitle() + protected function getLegacyUnderlyingTransactionObject() { + return $this->getStorage(); + } + final public function setViewer(PhabricatorUser $viewer) { $this->viewer = $viewer; return $this;