Skip to content

Commit

Permalink
https://github.com/mage2pro/core/issues/163
Browse files Browse the repository at this point in the history
  • Loading branch information
dmitrii-fediuk committed Oct 26, 2021
1 parent c2b68af commit 85ea501
Show file tree
Hide file tree
Showing 7 changed files with 37 additions and 30 deletions.
1 change: 1 addition & 0 deletions Core/Session.php
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ private function k($k) {return "df_$k";}
* @used-by \Df\Customer\Observer\CopyFieldset\OrderAddressToCustomer::execute()
* @used-by \Df\Customer\Observer\RegisterSuccess::execute()
* @used-by \Df\Customer\Plugin\Block\Form\Register::afterGetFormData()
* @used-by \Df\Sso\Css::isAccConfirmation()
* @used-by \Df\Sso\Css::isRegCompletion()
* @used-by \Df\Sso\CustomerReturn::_execute()
* @return self
Expand Down
7 changes: 7 additions & 0 deletions Core/lib/lang/prop.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,12 @@
* @used-by \Df\API\Client::logging()
* @used-by \Df\API\FacadeOptions::resC()
* @used-by \Df\API\FacadeOptions::silent()
* @used-by \Df\Checkout\Session::customer()
* @used-by \Df\Checkout\Session::messages()
* @used-by \Df\Customer\Session::needConfirm()
* @used-by \Df\Customer\Session::ssoId()
* @used-by \Df\Customer\Session::ssoProvider()
* @used-by \Df\Customer\Session::ssoRegistrationData()
* @used-by \Dfe\Sift\API\Client::cfg()
* @used-by \Inkifi\Pwinty\API\Entity\Image::attributes()
* @used-by \Inkifi\Pwinty\API\Entity\Image::copies()
Expand Down Expand Up @@ -47,6 +53,7 @@ function df_n_set($v) {return is_null($v) ? DF_N : $v;}
* @used-by \Df\API\FacadeOptions::silent()
* @used-by \Df\Checkout\Session::customer()
* @used-by \Df\Checkout\Session::messages()
* @used-by \Df\Customer\Session::needConfirm()
* @used-by \Df\Customer\Session::ssoId()
* @used-by \Df\Customer\Session::ssoProvider()
* @used-by \Df\Customer\Session::ssoRegistrationData()
Expand Down
4 changes: 0 additions & 4 deletions Customer/Model/Session.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,6 @@
* @method int|null getLastCustomerId(bool $clear = false)
* @method Session setLastCustomerId($v)
*
* 2016-12-04
* @method bool|null getDfNeedConfirm(bool $clear = false)
* @method void setDfNeedConfirm(bool $v)
*
* 2018-04-13
* @method bool|null getDfeFrugueCountry(bool $clear = false)
* @method void setDfeFrugueCountry(string $v)
Expand Down
15 changes: 7 additions & 8 deletions Customer/Observer/RegisterSuccess.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,20 +22,19 @@ final class RegisterSuccess implements ObserverInterface {
*/
function execute(O $o) {
$c = df_customer($o['customer']); /** @var Customer $c */
$s = df_customer_session(); /** @var Session $s */
$s2 = Sess::s(); /** @var Sess $s2 */
if ($s2->ssoId()) {
$c[Schema::fIdC($s2->ssoProvider())] = $s2->ssoId();
$s = Sess::s(); /** @var Sess $s */
if ($s->ssoId()) {
$c[Schema::fIdC($s->ssoProvider())] = $s->ssoId();
/**
* 2016-12-04
* Нельзя использовать здесь @see df_eav_update(),
* потому что наше поле не является атрибутом EAV, а является просто полем таблицы customer_entity.
*/
$c->save();
}
$s2->ssoId(null);
$s2->ssoProvider(null);
$s2->ssoRegistrationData([]);
$s->setDfNeedConfirm(df_customer_is_need_confirm($c));
$s->ssoId(null);
$s->ssoProvider(null);
$s->ssoRegistrationData([]);
$s->needConfirm(df_customer_is_need_confirm($c));
}
}
9 changes: 9 additions & 0 deletions Customer/Session.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,15 @@
use Magento\Customer\Model\Session\Storage;
# 2021-10-26 "Improve the custom session data handling interface": https://github.com/mage2pro/core/issues/163
final class Session extends \Df\Core\Session {
/**
* 2016-12-04, 2021-10-27
* @used-by \Df\Customer\Observer\RegisterSuccess::execute()
* @used-by \Df\Sso\Css::isAccConfirmation()
* @param bool|string $v [optional]
* @return $this|bool
*/
function needConfirm($v = DF_N) {return df_prop($this, $v, []);}

/**
* 2016-12-03, 2021-10-27
* @used-by \Df\Customer\Observer\RegisterSuccess::execute()
Expand Down
1 change: 0 additions & 1 deletion Customer/lib/o.php
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,6 @@ function df_customer_resource() {return df_o(CR::class);}
* @used-by df_session()
* @used-by wolf_sess_get()
* @used-by wolf_set()
* @used-by \Df\Customer\Observer\RegisterSuccess::execute()
* @used-by \Df\Sso\Css::isAccConfirmation()
* @used-by \Df\Sso\Css::isRegCompletion()
* @used-by \Df\Sso\CustomerReturn::_execute()
Expand Down
30 changes: 13 additions & 17 deletions Sso/Css.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,31 +38,27 @@ final protected function _toHtml() {
;}

/**
* 2016-12-04
* Кэшировать результат нужно обязательно, потому что в данном случае
* значение getDfNeedConfirm() уничтожается при извлечении из сессии.
* 2016-12-04 The result should be cached because the method resets the `needConfirm` value.
* @used-by _toHtml()
* @used-by \Df\Sso\Button::_toHtml()
* @return bool
*/
final static function isAccConfirmation() {return dfcf(function() {return
df_is_login() && df_customer_session()->getDfNeedConfirm(true)
;});}
final static function isAccConfirmation() {return dfcf(function() {
$s = Sess::s(); /** @var Sess $s */
if ($r = df_is_login() && $s->needConfirm()) { /** @var bool $r */
$s->needConfirm(false);
}
return $r;
});}

/**
* 2016-12-02
* Случай, когда покупатель авторизовался в провайдере SSO,
* но информации провайдера SSO недостаточно для автоматической регистрации
* покупателя в Magento.
* В этом случае метод @see \Df\Sso\CustomerReturn::execute()
* перенаправляет покупателя на страницу регистрации.
* В этом случае мы не показываем наши кнопки SSO,
* а также скрываем из шапки стандартные ссылки
* «Sign In», «Create an Account» и блок выбора валюты.
*
* 2016-12-04
* Кэшировать результат нужно обязательно, потому что в данном случае
* значение getDfNeedConfirm() уничтожается при извлечении из сессии.
* но информации провайдера SSO недостаточно для автоматической регистрации покупателя в Magento.
* В этом случае:
* 1) метод @see \Df\Sso\CustomerReturn::execute() перенаправляет покупателя на страницу регистрации.
* 2) мы не показываем наши кнопки SSO,
* а также скрываем из шапки стандартные ссылки «Sign In», «Create an Account» и блок выбора валюты.
* @return bool
*/
final static function isRegCompletion() {return dfcf(function() {return df_is_reg() && Sess::s()->ssoProvider();});}
Expand Down

0 comments on commit 85ea501

Please sign in to comment.