Merge remote-tracking branch 'upstream/master' into limit-profile-view

This commit is contained in:
tonis
2024-03-08 09:34:16 +02:00
2 changed files with 15 additions and 6 deletions

View File

@ -2,6 +2,7 @@
## dev ## dev
- Fix: Update last_login_at and last_login_ip on social networt authenticate (e.luhr)
- Enh: Keycloak auth client (e.luhr) - Enh: Keycloak auth client (e.luhr)
- Fix: Social Network Auth (eluhr) - Fix: Social Network Auth (eluhr)
- Enh #532: /user/registration/register now shows form validation errors - Enh #532: /user/registration/register now shows form validation errors

View File

@ -19,12 +19,15 @@ use Da\User\Model\SocialNetworkAccount;
use Da\User\Model\User; use Da\User\Model\User;
use Da\User\Query\SocialNetworkAccountQuery; use Da\User\Query\SocialNetworkAccountQuery;
use Da\User\Query\UserQuery; use Da\User\Query\UserQuery;
use Da\User\Traits\ModuleAwareTrait;
use Yii; use Yii;
use yii\authclient\AuthAction; use yii\authclient\AuthAction;
use yii\helpers\Url; use yii\helpers\Url;
class SocialNetworkAuthenticateService implements ServiceInterface class SocialNetworkAuthenticateService implements ServiceInterface
{ {
use ModuleAwareTrait;
protected $controller; protected $controller;
protected $authAction; protected $authAction;
protected $client; protected $client;
@ -50,7 +53,7 @@ class SocialNetworkAuthenticateService implements ServiceInterface
$account = $this->socialNetworkAccountQuery->whereClient($this->client)->one(); $account = $this->socialNetworkAccountQuery->whereClient($this->client)->one();
if (!$this->controller->module->enableSocialNetworkRegistration && ($account === null || $account->user === null)) { if (!$this->controller->module->enableSocialNetworkRegistration && ($account === null || $account->user === null)) {
Yii::$app->session->setFlash('danger', Yii::t('usuario', 'Registration on this website is disabled')); Yii::$app->session->setFlash('danger', Yii::t('usuario', 'Registration on this website is disabled'));
$this->authAction->setSuccessUrl(Url::to(['/user/security/login'])); $this->authAction->setSuccessUrl(Url::to(['/' . $this->getModule()->id . '/security/login']));
return false; return false;
} }
@ -58,7 +61,7 @@ class SocialNetworkAuthenticateService implements ServiceInterface
$account = $this->createAccount(); $account = $this->createAccount();
if (!$account) { if (!$account) {
Yii::$app->session->setFlash('danger', Yii::t('usuario', 'Unable to create an account.')); Yii::$app->session->setFlash('danger', Yii::t('usuario', 'Unable to create an account.'));
$this->authAction->setSuccessUrl(Url::to(['/user/security/login'])); $this->authAction->setSuccessUrl(Url::to(['/' . $this->getModule()->id . '/security/login']));
return false; return false;
} }
@ -72,11 +75,16 @@ class SocialNetworkAuthenticateService implements ServiceInterface
if ($account->user instanceof User) { if ($account->user instanceof User) {
if ($account->user->getIsBlocked()) { if ($account->user->getIsBlocked()) {
Yii::$app->session->setFlash('danger', Yii::t('usuario', 'Your account has been blocked.')); Yii::$app->session->setFlash('danger', Yii::t('usuario', 'Your account has been blocked.'));
$this->authAction->setSuccessUrl(Url::to(['/user/security/login'])); $this->authAction->setSuccessUrl(Url::to(['/' . $this->getModule()->id . '/security/login']));
} else { } else {
Yii::$app->user->login($account->user, $this->controller->module->rememberLoginLifespan); $result = Yii::$app->user->login($account->user, $this->controller->module->rememberLoginLifespan);
$this->authAction->setSuccessUrl(Yii::$app->getUser()->getReturnUrl()); if ($result) {
$result = true; $account->user->updateAttributes([
'last_login_at' => time(),
'last_login_ip' => $this->controller->module->disableIpLogging ? '127.0.0.1' : Yii::$app->request->getUserIP(),
]);
$this->authAction->setSuccessUrl(Yii::$app->getUser()->getReturnUrl());
}
} }
} else { } else {
$this->authAction->setSuccessUrl($account->getConnectionUrl()); $this->authAction->setSuccessUrl($account->getConnectionUrl());