Symfony - Доступ только для своих клиентов - PullRequest
0 голосов
/ 10 января 2019

У меня есть эти сущности

User

(ManyToMany)

Customer (OneToOne --> a customer can have a related customer)

Мое приложение работает. Теперь я хочу управлять разрешениями. Когда пользователь вошел в систему, я хочу показать только клиентов, связанных с ним и клиентов, связанных с детьми клиентов.

Например,

  • Каждый раз, когда я использую findAll (), он находит своих клиентов.

  • Маршрут / пользователь / 4 / клиент / 7: если клиент 7 не связан с пользователем, разрешение отклонено

Я думаю, что мне нужно переопределить Doctrine Repository или использовать EntityManagerDecorator. Я просто спрашиваю, что является лучшей практикой, чтобы понять это? Спасибо!

Ответы [ 3 ]

0 голосов
/ 11 января 2019

Почему бы вам не создать собственную пользовательскую функцию findAll () в вашем customerRepository, который фильтрует с вашим пользователем?

Что-то вроде

public function findAllRelatedToUser(User $user)
{
    return $this->createQueryBuilder('c')
                    ->innerJoin('c.user', 'u')
                    ->andWhere('u.id = :user_id')
                    ->setParameter('user_id', $user->getId())
                    ->getQuery()
                    ->getResult();
}
0 голосов
/ 27 февраля 2019

Наконец-то я нашел лучший способ.

Учебные фильтры

Запрос на прослушивание в ядре, если это касается моей сущности, примените мой фильтр (добавляя WHERE id = xx)

Я использую это: http://blog.michaelperrin.fr/2014/12/05/doctrine-filters/

0 голосов
/ 10 января 2019

По существу, такая операция, как поиск определенных данных, должна быть делегирована в хранилище. В конце концов, если вам придется искать в другом источнике данных, вы можете создать службу для этой конкретной ответственности и ввести необходимые зависимости. В вашем случае я бы сказал, что вам не нужно ничего переоценивать, просто создайте UserRepository и напишите туда функцию, которая делает то, что вам нужно.

Проверьте это: https://symfony.com/doc/3.3/doctrine/repository.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...