55
66namespace Login ;
77
8+ use Mvc5 \Arg ;
89use Mvc5 \Plugins ;
910use Mvc5 \Request \Request ;
1011use Mvc5 \Response \HttpResponse ;
1112use Mvc5 \Session \CSRFToken ;
13+ use Mvc5 \Session \Session ;
14+ use Mvc5 \User \User ;
1215use Mvc5 \View ;
1316
1417class 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