Пользовательский фильтр базы данных Apigility на основе запроса oAuth

Я создаю систему, подключенную к REST DB, в которой пользователи могут создавать/извлекать/запрашивать только свои собственные данные на основе client_id или user_id, не имеет значения. Я успешно реализовал объекты oAuth и Mapper/Resource, чтобы они соответствовали моей сущности/коллекции. После успешного запроса oAuth с использованием токена доступа есть ли рекомендуемый способ получить client_id или user_id, чтобы я мог фильтровать запросы к базе данных в зависимости от того, кто сделал запрос?


person Tom Shaw    schedule 11.02.2016    source источник


Ответы (1)


Решено. простое решение — в конфигурации API добавить экземпляр \ZF\MvcAuth\Identity\AuthenticatedIdentity в сопоставитель службы.

if ($sm->has('api-identity')) {
    $mapper->setAuthenticatedIdentity($sm->get('api-identity'));
} else {
    $mapper->setAuthenticatedIdentity(new \ZF\MvcAuth\Identity\AuthenticatedIdentity());
}

В Mapper добавьте сеттер/геттер.

protected $authenticatedIdentity;

public function setAuthenticatedIdentity(\ZF\MvcAuth\Identity\AuthenticatedIdentity $authenticatedIdentity)
{
    $this->authenticatedIdentity = $authenticatedIdentity;
}

protected function getAuthenticatedIdentity()
{
    return $this->authenticatedIdentity;
}

Окончательно.

print_r(get_class_methods($this->getAuthenticatedIdentity()));
person Tom Shaw    schedule 12.02.2016