Vlad
Diana Dvoryak
переписываю с этого видео https://www.youtube.com/watch?v=Sp9voB4eSAg&list=PLd-N2eP0f6v4S12e1W52lcWcBObMpZeAs&index=15 , там нет logincontroller
Павел
Павел
Diana Dvoryak
это я уже исправляла с доки, так как версии symfony разные
Павел
Влад прав верно навел, что перепутаны файрволы и не там прописаны настройки бандла.
Хотя ошибка все равно странная, что контроллер не найден
Павел
Потому что ошибка к секьюрити не относится
Павел
Может кэш что барахлит, и надо дропнуть
ANDREW
Всем привет, немного застрял на системе авторизации/аутентификации, необходимо сделать не просто разделение по ролям, но возможность работы в нескольких типах кабинетов
Будут 3 основные "роли" (типов кабинета) - Агент исполнителя, Агент заказчика и пользователь
Когда человек заходит в свой кабинет под пользователем, то он может зайти именно под агентом (исполнителя или заказчика) под которым работает - агент это нечто наподобие фирмы у которой может быть множество сотрудников - т.е Агент это фирма представляющяя интересы заказчика/исполнителя
Таким образом просто введение 3 ролей описанных выше - мало и приведет к не правильным разделениям ответсвенности по проекту
Скорее всего, как я вижу, правильно будет разделить именно на сущности
Фирмы - у нее будут также свои роли/пермишены
Сотрудник в этой фирмы - также будет иметь свои роли в рамках этой фирмы
есть ли примеры реализаций таких систем ? или статья? (гугл подвел)
не могу немного подступиться к этой задаче, по нескольким причинам:
1) вместо получения дефолтного getRoles мы в табличке users добавляем новую колонку agent_id - который обозначает того под чьей фирмой он зашел на данный момент (или это где хранить вообще)?
я понимаю что много таблиц связующих должно быть
Фирмы
Сотрудники
Связывающая таблица Фирм и их сотрудников
Фирмы_Роли
Сотрудники_Роли
Связующие таблицы Роль_Сотрудник_Фирма
Но как реализовать это разделение во время работы контроллеров, т.е чтобы реализовать например ручку с доступом только для бухгалтеров в фирмах только агента исполнителей мне нужно будет в аттрибутах писать что-то вроде isGranted(AGENT_EXECUTOR) and is_granted(БУХГАЛТЕР_AGENT_EXECUTOR) ?
Копните в сторону кейклока, там это все под капотом
ANDREW
Кейклоак это по сути очень гибкий клиент OAuth
Евгений
Всем мир! Подскажите пожалуйста, какого типа свойство нужно создать у entity, чтобы записать туда из поля с типом Collection - массив связанных обьектов, содержимое в таком виде "название и значение" (типа ассоц. Массива)? Спасибо
Nikolay
Ярослав
Евгений
Kirill
Котаны, что-то туплю, подскажите плиз как из конфигов в бандле прокинуть сервисы в контейнер билдер?
Ну носом в доку можно тыкнуть, например.
Есть конфиг с сервисами внутри:
example_bundle:
middleware:
- '@ExampleMiddleware'
Сконфиженный через TreeBuilder, примерно как:
->arrayNode('middleware')
->defaultValue([])
->variablePrototype()
->cannotBeEmpty()
->isRequired()
->end()
->end()
А теперь хочется как-то прокинуть их как аргумент внутрь сервиса:
$containerBuilder->register(Pipeline::class)
->addArgument(new Reference( ... )); // <<<< И вот тут я вообще хз как сказать, чтобы эти сервисы брались из конфига `example_bundle.middleware`
Kirill
О, кажись нашёл https://symfony.com/doc/current/bundles/extension.html#loading-services-directly-in-your-bundle-class через параметры онли
Kirill
Пока так заюзаю, но если у кого будут рекомендации как сделать лучше — был бы благодарен
Vlad
Так ты же можешь достать конфиг из compiler pass
Kirill
Да, я ступил, что-то не подумал что конфиги иначе, нежели сервисы регаются
Kirill
и там нет этих всяких собачек
Kirill
так что решение:
$middleware = [];
foreach ($config['middleware'] ?? [] as $value) {
$middleware[] = new TypedReference($value, MiddlewareInterface::class);
}
// ....
$builder->register(Pipeline::class)
->addArgument(new IteratorArgument($middleware))
;
Евгений
Всем мир! У меня в конфигурации nginx разрешены заголовки. Но приотправке запроса, в консоле браузера возникают ошибки: Запрос из постороннего
источника заблокирован: Политика одного источника запрещает чтение удаленного ресурса на «http://localhost:8081/api/v1/auth/signup».
(Причина: Учётные данные не поддерживаются, если заголовок CORS «Access-Control-Allow-Origin» установлен в «*»). и Запрос из
постороннего источника заблокирован: Политика одного источника запрещает чтение удаленного ресурса на http://localhost:8081/api/v1/auth/signup.
(Причина: не удалось выполнить запрос CORS). Код состояния: (null) Не подскажете в чем может быть дело? Спасибо.
The Ant
Иван
нужно глазами посмотреть, какой заголовок приходит
Евгений
Спасибо
A
The Ant
NelmioCorsBundle? Чем плохи бандлы?
коряво работает, чел кладет на просьбы трудящихся.
А также запускается пхп на пустой ответ сервера (удваиваешь кол-во запросов к пыхе на ровном месте)
Vlad
NelmioCorsBundle? Чем плохи бандлы?
Место того чтобы разрулить это на уровне nginx приходится поднимать все приложение. В идеале располагать все на одном домене, чтобы не терять в скорости. Ибо это доп запрос, как написали выше.
Vlad
Х2 нагрузка на сервак считай на ровном месте
Иван
откуда Х2 то?
Иван
сделайте фетч из консоли с любого сайта на любой и посмотрите количество запросов на вкладке сети
The Ant
А то я не знаю ну
Иван
The Ant
Зочем? Я и так знаю чё будет )
Юра
Кто-то использовал drupal? Оно вообще норм?
The Ant
а так - типичная симфа, со всем своим дерьмом
Юра
Я как-то посмотрел и уже по доке по-моему видно что какая-то мутная хрень
Юра
Вода какая-то вместо доки
Юра
Наверное нужно покупать их платные курсы
The Ant
а она тебе прям сильно нужна, друпалина эта?
Юра
Вакансии есть по ней неплохие
Юра
Ну и иногда что-то такое сделать самому, нужна цмс какая-то
The Ant
вротпресс наше всё
The Ant
если для себя
Spider
Aleksandr
Юра
Мнения разошлись )
Spider
Мнения разошлись )
система как система. Да сложновата. В отличие от вордпресса многое можно делать без кода. Курсы книжки - не помогут ни грамма до первыз шишек набитых самим. Много всего готового
Maks
Я несколько лет работал в студии где Друпал был основной цмс, на мой вкус очень удобная система хуков, легко пилить свои модули, много что получалось автоматизировать через drush, последнюю версию юзал 7, с 8 версии началась история с симфони
Maks
Про старый Друпал ничего плохого сказать не могу)
Spider
Aleksandr
Maks
Юра
Я пытался найти как там отрисовать график в админке, что-то ничего не нашел нормально с первого захода
Spider
Алексей
Юра
Юра
Я не понимаю такое ощущение по доке что оно еле живое
Spider
Spider
вот тебе свежий аналог https://api.drupal.org/api/drupal/core!lib!Drupal!Core!Entity!entity.api.php/function/hook_ENTITY_TYPE_view/8.2.x
Spider
тот до 8.х актуален
Алексей
Чятик нужна помощь!
Doctrine ORM. Есть сущность privelege связанный с studentDetails через manyToMany.
Мне надо получить такие данные
Студент 1 | привелегия 1
Студент 1 | привелегия 2
Студент 1 | привелегия 3
Студент 2 | привелегия 1
Студент 2 | привелегия 2
Студент 2 | привелегия 3
и другие возможные записи вариации.
Если я напишу запрос в PrivilegeRepository через DQL? то получаю на выходе только privelege у которых подгруженны studentDetails.
Я понимаю что это можно сделать через dbal, но это выглядит странно. Я думаю что это можно как-то сделать и через dql. подскажите как сделать?
Nikolay
RD
Наверно что то такое должно быть
$this->em
->createQueryBuilder()
->select(['privelege', 'student_details'])
->from(PrivelegeModel::class, 'privelege')
->leftJoin('privelege.student_details','student_details');
RD
Вопрос на засыпку: как использовать callable в аттрибутах ?
Нужно для 'normalizer' что то типа:
use Symfony\Component\Validator\Constraints as Assert;
#[Assert\Unique(
normalizer: fn($value) => $value
)]
Kirill
#[Assert\Unique(normalizer: [ClassName::class, 'methodName'])]
RD
О да
RD
Благодарю
Nikolay
Подскажите по конфигурированию, на 4.4 работало так
return static function (ContainerConfigurator $containerConfigurator, ContainerInterface $container): void {
$host = $container->getParameter('mailer.host');
};
Каким образом в 5.4 можно получить параметры? Сейчас контейнер нельзя прокидывать