Add gdpr, session history, captcha

This commit is contained in:
2026-01-28 20:40:38 +01:00
parent 4389470233
commit 98a0e33939
28 changed files with 1994 additions and 4 deletions

View File

@@ -6,7 +6,9 @@ namespace cgsmith\user\controllers;
use cgsmith\user\events\FormEvent;
use cgsmith\user\models\LoginForm;
use cgsmith\user\models\User;
use cgsmith\user\Module;
use cgsmith\user\services\SessionService;
use Yii;
use yii\filters\AccessControl;
use yii\filters\VerbFilter;
@@ -70,6 +72,13 @@ class SecurityController extends Controller
$module->trigger(self::EVENT_BEFORE_LOGIN, $event);
if ($model->load(Yii::$app->request->post()) && $model->login()) {
// Track session
if ($module->enableSessionHistory) {
/** @var SessionService $sessionService */
$sessionService = Yii::$container->get(SessionService::class);
$sessionService->trackSession(Yii::$app->user->identity);
}
// Trigger after login event
$event = new FormEvent(['form' => $model]);
$module->trigger(self::EVENT_AFTER_LOGIN, $event);
@@ -91,10 +100,20 @@ class SecurityController extends Controller
/** @var Module $module */
$module = $this->module;
/** @var User|null $user */
$user = Yii::$app->user->identity;
// Trigger before logout event
$event = new FormEvent(['form' => null]);
$module->trigger(self::EVENT_BEFORE_LOGOUT, $event);
// Remove session tracking
if ($module->enableSessionHistory && $user !== null) {
/** @var SessionService $sessionService */
$sessionService = Yii::$container->get(SessionService::class);
$sessionService->removeCurrentSession($user);
}
Yii::$app->user->logout();
// Trigger after logout event