возможно ли промежуточное ПО добавлять значения в приложение при использовании SLIM

Я использую Slim для создания API для отдыха и пытаюсь использовать промежуточное ПО для настройки аутентификации / авторизации. Аутентификация работает, однако мне нужно иметь возможность доступа к разрешениям пользователей за пределами промежуточного программного обеспечения, поэтому мне нужен какой-то способ, чтобы получить по вертикали разрешения пользователей или только пользователя (и получить их разрешения позже), или способ убедиться, что то же самое Использование экземпляра Slim также решило бы мою проблему. Я впервые использую slim и middleware в проекте и не знаю, как это сделать, или если это на самом деле невозможно, и мне следует использовать другой метод.

Промежуточное программное обеспечение выглядит следующим образом:

class TokenOverBasicAuth extends \Slim\Middleware
{
protected $settings = array(
'realm' => 'Protected Area',
'root'  => '/'
);

public function __construct(array $config = array())
{
if (!isset($this->app)) {
$this->app = \Slim\Slim::getInstance();
}
$this->config = array_merge($this->settings, $config);
}

public function call()
{
$req = $this->app->request();
$res = $this->app->response();

$authUser = $req->headers('PHP_AUTH_USER');
$authToken = $req->headers('PHP_AUTH_PW');

if (preg_match('|^/api/v.*$|', $req->getPath(), $req->getResourceUri()) && (!($authToken && $authUser && $this->verify($authUser, $authToken)))) {
$res->status(401);
$res->header(
'WWW-Authenticate',
sprintf('Basic realm="%s"', $this->config['realm'])
);
$res->body(json_encode(array("401" => '401 Unauthorized',
"status" => '401')
));
} else {
$this->next->call();
}
}

protected function verify($authUser, $authToken)
{
$user = // A call yo the database for user details based on token and password
if (false !== $user && count($user) == 1) {

$this->app->user = $user;
if ( ! empty ($u->permission->access)) {
$u->permission->access = unserialize($this->app->user->permission->access);
}
// calling print_r($this->app->user); here shows expected results
return true;
}

return false;
}

Я вызываю промежуточное программное обеспечение в моем загрузчике, используя:

$app->add(new API\Middleware\TokenOverBasicAuth(array('root' => '/api/v1')));

Попытка получить доступ к значению пользователя, например print_r($app->user); сразу после этого видно, что ничего не записано.

Пожалуйста, дайте мне знать, если мне нужно что-то объяснить, я впервые спрашиваю здесь.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]