Skip to content

Commit bb72789

Browse files
committed
login redirect, immutable user class
1 parent 058c6be commit bb72789

File tree

1 file changed

+23
-10
lines changed

1 file changed

+23
-10
lines changed

src/Login/Controller.php

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,13 @@
55

66
namespace Login;
77

8+
use Mvc5\Arg;
89
use Mvc5\Plugins;
910
use Mvc5\Request\Request;
1011
use Mvc5\Response\HttpResponse;
1112
use Mvc5\Session\CSRFToken;
13+
use Mvc5\Session\Session;
14+
use Mvc5\User\User;
1215
use Mvc5\View;
1316

1417
class Controller
@@ -20,8 +23,8 @@ class Controller
2023
use Plugins\Messages;
2124
use Plugins\Response;
2225
use Plugins\Service;
26+
use Plugins\Session;
2327
use Plugins\Url;
24-
use Plugins\User;
2528
use View\Model;
2629

2730
/**
@@ -31,12 +34,12 @@ class Controller
3134

3235
/**
3336
* @param Request $request
34-
* @return mixed
37+
* @param Session $session
38+
* @param User $user
39+
* @return mixed|\Mvc5\Http\Response|HttpResponse|\Mvc5\Response\RedirectResponse|View\ViewModel
3540
*/
36-
function __invoke(Request $request)
41+
protected function login(Request $request, Session $session, User $user)
3742
{
38-
$user = $this->user();
39-
4043
if ($user->authenticated()) {
4144
$this->warning('Already logged in!');
4245
return $this->redirect($this->url(['dashboard', 'user' => $user->username()]));
@@ -55,17 +58,27 @@ function __invoke(Request $request)
5558
// $request['session']->regenerate() &&
5659
// (new CSRFToken\Generate)($request['session'], true);
5760

61+
$redirect_url = $session['redirect_url'];
62+
unset($session['redirect_url']);
5863

59-
$redirect_url = $user['redirect_url'];
60-
61-
$user['authenticated'] = true;
62-
$user['username'] = $request->data('username');
63-
unset($user['redirect_url']);
64+
$session['user'] = $user->with([
65+
'authenticated' => true,
66+
'username' => $request->data('username')
67+
]);
6468

6569
$this->success('Login successful!');
6670
//throws the exception when debug is enabled
6771
//$this->log(new \Exception('Login successful!'));
6872

6973
return $this->redirect($redirect_url ?? $this->url('dashboard'));
7074
}
75+
76+
/**
77+
* @param Request $request
78+
* @return mixed
79+
*/
80+
function __invoke(Request $request)
81+
{
82+
return $this->login($request, $request[Arg::SESSION], $request[Arg::USER]);
83+
}
7184
}

0 commit comments

Comments
 (0)