Skip to content

Commit 9082500

Browse files
committed
Merge branch 'release/3.7.2'
2 parents 4e10a82 + fb8d92a commit 9082500

File tree

3 files changed

+35
-2
lines changed

3 files changed

+35
-2
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
# v3.7.2
2+
## 01/02/2023
3+
4+
1. [](#new)
5+
* Added new `onBeforeSessionStart()` event to store redirect + messages when session is regenerated during login
6+
* Requires Grav `1.7.38` for new event availability
7+
18
# v3.7.1
29
## 06/14/2022
310

blueprints.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: Login
22
slug: login
33
type: plugin
4-
version: 3.7.1
4+
version: 3.7.2
55
testing: false
66
description: Enables user authentication and login screen.
77
icon: sign-in
@@ -15,7 +15,7 @@ bugs: https://github.com/getgrav/grav-plugin-login/issues
1515
license: MIT
1616

1717
dependencies:
18-
- { name: grav, version: '>=1.7.32' }
18+
- { name: grav, version: '>=1.7.38' }
1919
- { name: form, version: '>=6.0.0' }
2020
- { name: email, version: '>=3.1.6' }
2121

login.php

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
use Grav\Common\User\Interfaces\UserInterface;
2424
use Grav\Common\Utils;
2525
use Grav\Common\Uri;
26+
use Grav\Events\BeforeSessionStartEvent;
2627
use Grav\Events\PluginsLoadedEvent;
2728
use Grav\Events\SessionStartEvent;
2829
use Grav\Framework\Flex\Interfaces\FlexCollectionInterface;
@@ -62,6 +63,9 @@ class LoginPlugin extends Plugin
6263
/** @var Invitation|null */
6364
protected $invitation;
6465

66+
protected $temp_redirect;
67+
protected $temp_messages;
68+
6569
/**
6670
* @return array
6771
*/
@@ -70,6 +74,7 @@ public static function getSubscribedEvents(): array
7074
return [
7175
PluginsLoadedEvent::class => [['onPluginsLoaded', 10]],
7276
SessionStartEvent::class => ['onSessionStart', 0],
77+
BeforeSessionStartEvent::class => ['onBeforeSessionStart', 0],
7378
PageAuthorizeEvent::class => ['onPageAuthorizeEvent', -10000],
7479
'onPluginsInitialized' => [['initializeSession', 10000], ['initializeLogin', 1000]],
7580
'onTask.login.login' => ['loginController', 0],
@@ -124,6 +129,18 @@ public function onPluginsLoaded(): void
124129
};
125130
}
126131

132+
/**
133+
* @param BeforeSessionStartEvent $event
134+
* @return void
135+
*/
136+
public function onBeforeSessionStart(BeforeSessionStartEvent $event): void
137+
{
138+
$session = $event->session;
139+
$this->temp_redirect = $session->redirect_after_login ?? null;
140+
$this->temp_messages = $session->messages;
141+
}
142+
143+
127144
/**
128145
* @param SessionStartEvent $event
129146
* @return void
@@ -132,6 +149,15 @@ public function onSessionStart(SessionStartEvent $event): void
132149
{
133150
$session = $event->session;
134151

152+
if (isset($this->temp_redirect)) {
153+
$session->redirect_after_login = $this->temp_redirect;
154+
unset($this->temp_redirect);
155+
}
156+
if (isset($this->temp_messages)) {
157+
$session->messages = $this->temp_messages;
158+
unset($this->temp_messages);
159+
}
160+
135161
$user = $session->user ?? null;
136162
if ($user && $user->exists() && ($this->config()['session_user_sync'] ?? false)) {
137163
// User is stored into the filesystem.

0 commit comments

Comments
 (0)