Compare commits
7 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
a9bb3e3be5 | ||
|
260ffeeb74 | ||
|
071aa12e13 | ||
|
bf0c42f474 | ||
|
a90df3ca74 | ||
|
2debb3dc02 | ||
|
e20bef3b9a |
|
@ -17,7 +17,8 @@
|
|||
}
|
||||
},
|
||||
"require": {
|
||||
"meta-tech/pws-auth" : "^2.1",
|
||||
"php" : "^7.0",
|
||||
"meta-tech/pws-auth" : "@dev",
|
||||
"meta-tech/silex-controller-service" : "^1.0",
|
||||
"silex/silex": "^2.0",
|
||||
"gecko-packages/gecko-silex-config-service": "^2.0",
|
||||
|
|
|
@ -51,6 +51,17 @@ abstract class Base implements ControllerProviderInterface
|
|||
|
||||
}
|
||||
|
||||
/*!
|
||||
* @method routing
|
||||
* @public
|
||||
* @param Silex\ControllerCollection $collection
|
||||
* @return Silex\ControllerCollection
|
||||
*/
|
||||
public function routing(ControllerCollection $collection) : ControllerCollection
|
||||
{
|
||||
return $collection;
|
||||
}
|
||||
|
||||
/*!
|
||||
* @method connect
|
||||
* @public
|
||||
|
|
|
@ -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);
|
||||
$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;
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@ -147,20 +163,22 @@ 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();
|
||||
|
||||
$token = $this->authenticator->getToken();
|
||||
$tokenResponse = $this->authenticator->generateResponseHeader($token);
|
||||
$headers = $this->getResponseHeaders($headers, $tokenResponse);
|
||||
if ($this->authenticator->isValid($token)) {
|
||||
if (!empty($sid = $this->authenticator->getSessionId($token))) {
|
||||
$this->sessionInvalidate();
|
||||
$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()) {
|
||||
$this->session->set('pwsauth.response', $tokenResponse);
|
||||
return;
|
||||
}
|
||||
else {
|
||||
|
@ -173,7 +191,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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -49,12 +49,16 @@ class Controller extends Base
|
|||
* @param [] $data
|
||||
* @return Symfony\Component\HttpFoundation\JsonResponse
|
||||
*/
|
||||
public function response($done = false, $msg = "fail", $data = null)
|
||||
public function response($done = false, $msg = "fail", $data = null, $tokenResponse = null)
|
||||
{
|
||||
if (is_null($data)) {
|
||||
unset($data);
|
||||
}
|
||||
$response = new JsonResponse(compact('done', 'msg', 'data'), 200);
|
||||
$headers = [];
|
||||
if (!empty($tokenResponse) || !empty($tokenResponse = $this->session->get('pwsauth.response'))) {
|
||||
$headers['Pws-Response'] = $tokenResponse;
|
||||
}
|
||||
$response = new JsonResponse(compact('done', 'msg', 'data'), 200, $headers);
|
||||
return $response;
|
||||
}
|
||||
|
||||
|
@ -103,11 +107,12 @@ class Controller extends Base
|
|||
*/
|
||||
public function logout()
|
||||
{
|
||||
$tokenResponse = $this->session->isStarted() ? $this->session->get('pwsauth.response') : null;
|
||||
$this->handler->sessionInvalidate();
|
||||
$sessid = $this->session->getId();
|
||||
$done = true;
|
||||
$msg = 'session logout';
|
||||
return $this->response($done, $msg);
|
||||
return $this->response($done, $msg, null, $tokenResponse);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
Loading…
Reference in New Issue
Block a user