From e20bef3b9ab29f9d4c947d1c456714926d20c971 Mon Sep 17 00:00:00 2001 From: a-sansara Date: Tue, 21 Mar 2017 01:35:31 +0100 Subject: [PATCH] manage responseHeader --- src/MetaTech/Silex/Ws/Authentication.php | 37 ++++++++++++++++++------ src/MetaTech/Silex/Ws/Controller.php | 6 +++- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/src/MetaTech/Silex/Ws/Authentication.php b/src/MetaTech/Silex/Ws/Authentication.php index dac0d54..53419a8 100644 --- a/src/MetaTech/Silex/Ws/Authentication.php +++ b/src/MetaTech/Silex/Ws/Authentication.php @@ -95,11 +95,13 @@ class Authentication public function auth(Request $request) { $this->sessionInvalidate(); - $done = false; - $msg = 'authentication require'; - $token = $this->authenticator->getToken(); + $done = false; + $msg = 'authentication require'; + $token = $this->authenticator->getToken(); + $login = $request->get('login'); + $responseToken = $this->authenticator->generateResponseHeader($token, $login); + $headers = $this->getResponseHeaders($responseToken); if ($this->authenticator->isValid($token)) { - $login = $request->get('login'); $password = $request->get('password'); if ($this->authenticator->check($token, $login)) { try { @@ -117,7 +119,21 @@ class Authentication if (!$done) { sleep(3); } - return new JsonResponse(compact('done', 'msg', 'data'), $done ? 200 : 401); + return new JsonResponse(compact('done', 'msg', 'data'), $done ? 200 : 401, $headers); + } + + /*! + * @method getResponseHeaders + * @private + * @param [assoc] $headers + * @return [assoc] + */ + private function getResponseHeaders($headers=[], $tokenResponse=null) + { + if (!empty($tokenResponse) || !empty($tokenResponse = $this->session->get('pwsauth.response'))) { + $headers['Pws-Response'] = $tokenResponse; + } + return $headers } /*! @@ -134,6 +150,7 @@ class Authentication $user->key = $token->getIdent(); $user->login = $login; $this->session->set('user', $user); + $this->session->set('pwsauth.response', $this->authenticator->generateResponseHeader($token, $login)); $this->session->save(); return $sid; } @@ -147,8 +164,9 @@ class Authentication public function check(Request $request) { if (!$this->isAllowedRoute($request->getPathInfo())) { - $done = false; - $msg = "authentication require"; + $done = false; + $msg = "authentication require"; + $headers = []; try { $token = $this->authenticator->getToken(); @@ -158,9 +176,10 @@ class Authentication $this->session->setId($sid); $this->session->start(); $user = $this->session->get('user'); - $data = compact('user'); // done : lets controller takes hand if (!is_null($user) && $user->key == $token->getIdent()) { + $tokenResponse = $this->authenticator->generateResponseHeader($token, $user->login) + $this->session->set('pwsauth.response', $tokenResponse); return; } else { @@ -173,7 +192,7 @@ class Authentication $done = false; $msg = $e->getMessage(); } - return new JsonResponse(compact('done', 'msg', 'data'), 401); + return new JsonResponse(compact('done', 'msg', 'data'), 401, $headers); } } } diff --git a/src/MetaTech/Silex/Ws/Controller.php b/src/MetaTech/Silex/Ws/Controller.php index 377b548..1b8ab96 100644 --- a/src/MetaTech/Silex/Ws/Controller.php +++ b/src/MetaTech/Silex/Ws/Controller.php @@ -54,7 +54,11 @@ class Controller extends Base if (is_null($data)) { unset($data); } - $response = new JsonResponse(compact('done', 'msg', 'data'), 200); + $headers = []; + if (!empty($tokenResponse = $this->session->get('pwsauth.response'))) { + $headers['Pws-Response'] = $tokenResponse; + } + $response = new JsonResponse(compact('done', 'msg', 'data'), 200, $headers); return $response; }