Cake PHP 3.x - изменение пользовательских данных в компоненте Auth перед созданием сессии - PullRequest
0 голосов
/ 09 апреля 2020

При использовании компонента Auth в Cake PHP 3 вы можете определить findAuth() искатель (или настроить другой искатель), чтобы контролировать, какие данные загружаются:

// AppController
$this->loadComponent('Auth', [
    //...
    'authenticate' => [
        'Form' => [
            'finder' => 'auth'
        ]
    ],
    //...
]);


// UsersTable
public function findAuth($query, array $options)
{
    return $query
        ->...;
}

Мне нужно немного функциональность, которую нельзя сделать с помощью построителя запросов. Как я могу постобработать загруженные данные аутентификации перед созданием сеанса?
Обратите внимание, что у меня есть разные способы входа в систему моих пользователей, поэтому я бы предпочел, чтобы это было сохранено в логи AuthComponent c.

(Это все еще для Cake PHP 3, но краткий комментарий о том, как это можно сделать в новом подключаемом модуле Cake PHP 4 Authentication.) потребность: данные должны быть реорганизованы в массиве пользователей на основе текущего контекста, то есть пользователи могут выбрать активный проект.

1 Ответ

1 голос
/ 09 апреля 2020

Я до сих пор не совсем уверен, что именно вам нужно реорганизовать и каким образом, но обычно вы можете изменять запрашиваемые данные с помощью картографов / редукторов и средств форматирования результатов, причем последнее обычно проще.

Вот краткий пример, который добавил бы дополнительное поле с именем additional_data к результату, если установлено поле с именем active_project_id:

$query->formatResults(function (\Cake\Collection\CollectionInterface $results) {
    return $results->map(function ($row) {
        if (isset($row['active_project_id'])) {
            $row['additional_data'] = 'lorem ipsum';
        }

        return $row;
    });
});

Такой запрос поиска будет работать с новой аутентификацией плагин тоже.

См. также

...