artem
http://ideone.com/dYLdtQ
artem
Все будет объект
Kirill
какие-то рубишные замашки)
Kirill
давай лучше "всё будет функция")
Kirill
хотя не, запилить хаскель из пыха не получится =(
Maks
а смысл?
Kirill
ну прикольно же)
Сергей
есть Api на бекенде.
есть фронтенд, который вызывает это api при наступлении определенных событий. например, если пользователь посмотрел видео на странице,мы должны вызвать апи, по которому пользователь заработает xxx очков.
Проблема в том, что хотелось бы интрегрировать этот функционал на разные сайты. Эти сайты не должны делать ничего, кроме интеграции скрипта к себе на страницу.
Не пойму как организовать аутентификацию на бекенде, если методы бекенда будут вызываться из js на странице по наступлению некоторых событий.
Сергей
Можно авторизовывать пользователя на бекенде, но тогда у авторизовавшегося пользователя будет возможность самостоятельно вызывать апи бекенда и зарабатывать очки не совершая необходимые события
Kirill
artem
Сергей
Самое простое это сделать оауз и создать несколько клиентов
так и есть.
Пользователь авторизуется на сайте-партнере через ССО и токен авторизации передается на бекенд.
Но в таком случае пользователь, зная свой токен сможет самостоятельно вызывать методы апи не совершая необходимые события.
Maks
https://github.com/symfony/recipes-contrib/tree/master/maksze/telemetry-bundle/0.4
Нихольм сдался и принял рецепт для моего бандла)))
artem
Сорри. Мб кому пригодится фидбэк от одной из крупнейших украинских компаний
artem
Feetback from Oro Inc.
S

Sofiya Finogenova
кому: я
0 минут назад
Подробнее...
Добрый день, Артем!
Большое спасибо за проявленный интерес к нашей компании и вакансии.
К сожалению, на данном этапе мы вынуждены Вам отказать в пользу более опытного кандидата.
Будем рады оставаться с Вами на связи и сообщать о новых вакансиях, которые могут Вас заинтересовать.
Ниже Вы можете ознакомиться с Вашим техническим фитбэком:
PHP
Стоит вспомнить как работает __set.
Стоит почитать для чего нужны функции mb_ . 
Владеете информацией, что в интерфейсах только public методы.
Владеете информацией про reflection и ее возможности.
Владеете информацией про сесси, а так же как и где передается идентификатор.
Владеете информацией про куки.
Стоит вспомнить что это за опция: http_only.
DB
Владеете информацией о транзакциях и что произойдет при обрыве связи.
Стоит вспомнить о том, как ведет себя СУБД при параллельных запросах.
Symfony
Владеете информацией, что из экшина контроллера возвращается Response и  про JsonResponse.
Стоит вникнуть в то, что будет, если вернуть любое другое значние как это обработать.
Владеете информацией про форм-тайпы, метод buildForm.
Владеете информацией про configureOptions для задания дефолтных настроек (data_class), но стоит вспомнить как определить свои настройки и как их использовать.
Стоит почитать про события форм.
Стоит вспомнить, как использовать форму, а так же про этап сабмита данных. Стоит почитать про методы handleRequest, submit.
Стоит почитать  в какой момент запускается валидация формы. 
Ознакомиться с информацией как создать и использовать свой констрейнт.
Подтянуть знания в тегах, в видимости сервисов.
Подтянуть знания в (yaml, xml) и в парам конвертеры.
 
Doctrine
Владеете информацией про методы persist, flush, getRepository класса EntityManager.
Больше вникнуть в  persist и flush.
Вспомнить для чего используются события pre_persist, pre_flush.
Владеете информацией про ArrayCollection, но стоит вспомнить про другие типы коррекций и когда  используются.
Стоит почитать про опцию cascade для связей, но владеете информацией про onDelete=CASCADE.
Стоит почитать о orphanRemoval
.exe
Feetback from Oro Inc.
S

Sofiya Finogenova
кому: я
0 минут назад
Подробнее...
Добрый день, Артем!
Большое спасибо за проявленный интерес к нашей компании и вакансии.
К сожалению, на данном этапе мы вынуждены Вам отказать в пользу более опытного кандидата.
Будем рады оставаться с Вами на связи и сообщать о новых вакансиях, которые могут Вас заинтересовать.
Ниже Вы можете ознакомиться с Вашим техническим фитбэком:
PHP
Стоит вспомнить как работает __set.
Стоит почитать для чего нужны функции mb_ . 
Владеете информацией, что в интерфейсах только public методы.
Владеете информацией про reflection и ее возможности.
Владеете информацией про сесси, а так же как и где передается идентификатор.
Владеете информацией про куки.
Стоит вспомнить что это за опция: http_only.
DB
Владеете информацией о транзакциях и что произойдет при обрыве связи.
Стоит вспомнить о том, как ведет себя СУБД при параллельных запросах.
Symfony
Владеете информацией, что из экшина контроллера возвращается Response и  про JsonResponse.
Стоит вникнуть в то, что будет, если вернуть любое другое значние как это обработать.
Владеете информацией про форм-тайпы, метод buildForm.
Владеете информацией про configureOptions для задания дефолтных настроек (data_class), но стоит вспомнить как определить свои настройки и как их использовать.
Стоит почитать про события форм.
Стоит вспомнить, как использовать форму, а так же про этап сабмита данных. Стоит почитать про методы handleRequest, submit.
Стоит почитать  в какой момент запускается валидация формы. 
Ознакомиться с информацией как создать и использовать свой констрейнт.
Подтянуть знания в тегах, в видимости сервисов.
Подтянуть знания в (yaml, xml) и в парам конвертеры.
 
Doctrine
Владеете информацией про методы persist, flush, getRepository класса EntityManager.
Больше вникнуть в  persist и flush.
Вспомнить для чего используются события pre_persist, pre_flush.
Владеете информацией про ArrayCollection, но стоит вспомнить про другие типы коррекций и когда  используются.
Стоит почитать про опцию cascade для связей, но владеете информацией про onDelete=CASCADE.
Стоит почитать о orphanRemoval
👍 пасеба, нот бед
artem
.exe
Вай ис бэд?
говорю НЕ плохо, спасибо за то что скинул
artem
Да, и тут такого не видел request stack тоже спрашивали
Александр
Feetback from Oro Inc.
S

Sofiya Finogenova
кому: я
0 минут назад
Подробнее...
Добрый день, Артем!
Большое спасибо за проявленный интерес к нашей компании и вакансии.
К сожалению, на данном этапе мы вынуждены Вам отказать в пользу более опытного кандидата.
Будем рады оставаться с Вами на связи и сообщать о новых вакансиях, которые могут Вас заинтересовать.
Ниже Вы можете ознакомиться с Вашим техническим фитбэком:
PHP
Стоит вспомнить как работает __set.
Стоит почитать для чего нужны функции mb_ . 
Владеете информацией, что в интерфейсах только public методы.
Владеете информацией про reflection и ее возможности.
Владеете информацией про сесси, а так же как и где передается идентификатор.
Владеете информацией про куки.
Стоит вспомнить что это за опция: http_only.
DB
Владеете информацией о транзакциях и что произойдет при обрыве связи.
Стоит вспомнить о том, как ведет себя СУБД при параллельных запросах.
Symfony
Владеете информацией, что из экшина контроллера возвращается Response и  про JsonResponse.
Стоит вникнуть в то, что будет, если вернуть любое другое значние как это обработать.
Владеете информацией про форм-тайпы, метод buildForm.
Владеете информацией про configureOptions для задания дефолтных настроек (data_class), но стоит вспомнить как определить свои настройки и как их использовать.
Стоит почитать про события форм.
Стоит вспомнить, как использовать форму, а так же про этап сабмита данных. Стоит почитать про методы handleRequest, submit.
Стоит почитать  в какой момент запускается валидация формы. 
Ознакомиться с информацией как создать и использовать свой констрейнт.
Подтянуть знания в тегах, в видимости сервисов.
Подтянуть знания в (yaml, xml) и в парам конвертеры.
 
Doctrine
Владеете информацией про методы persist, flush, getRepository класса EntityManager.
Больше вникнуть в  persist и flush.
Вспомнить для чего используются события pre_persist, pre_flush.
Владеете информацией про ArrayCollection, но стоит вспомнить про другие типы коррекций и когда  используются.
Стоит почитать про опцию cascade для связей, но владеете информацией про onDelete=CASCADE.
Стоит почитать о orphanRemoval
спасибо, добавлю что-нибудь себе на изучение-повторение. А вообще работал год с их детищем oro platform
Yaro
Kolya
Feetback from Oro Inc.
S

Sofiya Finogenova
кому: я
0 минут назад
Подробнее...
Добрый день, Артем!
Большое спасибо за проявленный интерес к нашей компании и вакансии.
К сожалению, на данном этапе мы вынуждены Вам отказать в пользу более опытного кандидата.
Будем рады оставаться с Вами на связи и сообщать о новых вакансиях, которые могут Вас заинтересовать.
Ниже Вы можете ознакомиться с Вашим техническим фитбэком:
PHP
Стоит вспомнить как работает __set.
Стоит почитать для чего нужны функции mb_ . 
Владеете информацией, что в интерфейсах только public методы.
Владеете информацией про reflection и ее возможности.
Владеете информацией про сесси, а так же как и где передается идентификатор.
Владеете информацией про куки.
Стоит вспомнить что это за опция: http_only.
DB
Владеете информацией о транзакциях и что произойдет при обрыве связи.
Стоит вспомнить о том, как ведет себя СУБД при параллельных запросах.
Symfony
Владеете информацией, что из экшина контроллера возвращается Response и  про JsonResponse.
Стоит вникнуть в то, что будет, если вернуть любое другое значние как это обработать.
Владеете информацией про форм-тайпы, метод buildForm.
Владеете информацией про configureOptions для задания дефолтных настроек (data_class), но стоит вспомнить как определить свои настройки и как их использовать.
Стоит почитать про события форм.
Стоит вспомнить, как использовать форму, а так же про этап сабмита данных. Стоит почитать про методы handleRequest, submit.
Стоит почитать  в какой момент запускается валидация формы. 
Ознакомиться с информацией как создать и использовать свой констрейнт.
Подтянуть знания в тегах, в видимости сервисов.
Подтянуть знания в (yaml, xml) и в парам конвертеры.
 
Doctrine
Владеете информацией про методы persist, flush, getRepository класса EntityManager.
Больше вникнуть в  persist и flush.
Вспомнить для чего используются события pre_persist, pre_flush.
Владеете информацией про ArrayCollection, но стоит вспомнить про другие типы коррекций и когда  используются.
Стоит почитать про опцию cascade для связей, но владеете информацией про onDelete=CASCADE.
Стоит почитать о orphanRemoval
выше само задание было? Или выполненное?)
artem
Maks
Вангую: со дня на день посыпится спам за криптовалюты
Vadim
Maks
Denis
Feetback from Oro Inc.
S

Sofiya Finogenova
кому: я
0 минут назад
Подробнее...
Добрый день, Артем!
Большое спасибо за проявленный интерес к нашей компании и вакансии.
К сожалению, на данном этапе мы вынуждены Вам отказать в пользу более опытного кандидата.
Будем рады оставаться с Вами на связи и сообщать о новых вакансиях, которые могут Вас заинтересовать.
Ниже Вы можете ознакомиться с Вашим техническим фитбэком:
PHP
Стоит вспомнить как работает __set.
Стоит почитать для чего нужны функции mb_ . 
Владеете информацией, что в интерфейсах только public методы.
Владеете информацией про reflection и ее возможности.
Владеете информацией про сесси, а так же как и где передается идентификатор.
Владеете информацией про куки.
Стоит вспомнить что это за опция: http_only.
DB
Владеете информацией о транзакциях и что произойдет при обрыве связи.
Стоит вспомнить о том, как ведет себя СУБД при параллельных запросах.
Symfony
Владеете информацией, что из экшина контроллера возвращается Response и  про JsonResponse.
Стоит вникнуть в то, что будет, если вернуть любое другое значние как это обработать.
Владеете информацией про форм-тайпы, метод buildForm.
Владеете информацией про configureOptions для задания дефолтных настроек (data_class), но стоит вспомнить как определить свои настройки и как их использовать.
Стоит почитать про события форм.
Стоит вспомнить, как использовать форму, а так же про этап сабмита данных. Стоит почитать про методы handleRequest, submit.
Стоит почитать  в какой момент запускается валидация формы. 
Ознакомиться с информацией как создать и использовать свой констрейнт.
Подтянуть знания в тегах, в видимости сервисов.
Подтянуть знания в (yaml, xml) и в парам конвертеры.
 
Doctrine
Владеете информацией про методы persist, flush, getRepository класса EntityManager.
Больше вникнуть в  persist и flush.
Вспомнить для чего используются события pre_persist, pre_flush.
Владеете информацией про ArrayCollection, но стоит вспомнить про другие типы коррекций и когда  используются.
Стоит почитать про опцию cascade для связей, но владеете информацией про onDelete=CASCADE.
Стоит почитать о orphanRemoval
Тесты какие-то проходили или простое ссобеседование?
Denis
OroPlatform отличная платформа уже 2 года сней работаем... Но по ощущениям немного отстают они от современного приложения на Symfony 4
artem
Anonymous
Всем привет, ребят с кем можно посоветоваться по поводу OAuth и HttpClient?
Vadim
Со всем чатом. Задавай вопрос.
Anonymous
короче у меня такая проблема, есть урл авторизации
как пример
http://127.0.0.1:8000/api/oauth/v2/token/?grant_type=authorization_code&code=OWQ1MjI1NjM4OWY0YmZhOTM3NzBhNTdmOTg3YzM0ZDk0YzU3ZGQ2NDlkMTliYTJmNjYwNWYzMzBkOWMyN2Q4YQ&client_id=1_3u3bpqxw736s4kgo0gsco4kw48gos800gscg4s4w8w80oogc8c&client_secret=6cja0geitwsok4gckw0cc0c04sc0sgwgo8kggcoc08wocsw8wg&redirect_uri=http%3A%2F%2F127.0.0.1%3A8000%2Fapi%2Foauth-redirect
при запросе я пытаюсь его обработать
$client = HttpClient::create();
$response = $client->request('GET', getenv('SECURITY_ADDRESS').'/api/oauth/v2/token/?', ['timeout' => 60.5], [
// these values are automatically encoded before including them in the URL
'query' => [
'grant_type' => 'authorization_code',
'code' => $request->query->get('code'),
'client_id' => getenv('MICROSERVICE_CLIENT_ID'),
'client_secret' => getenv('MICROSERVICE_CLIENT_SECRET'),
'redirect_uri' => $request->getScheme().':'.$this->generateUrl('webslon_auth.swagger.oauth_redirect', [], UrlGeneratorInterface::NETWORK_PATH)
],
]);
$contents = $response->getContent();
var_dump($contents);
но мне выкидывает постоянно
"Reading from the response stream reached the idle timeout."
Anonymous
что я не так сделал?
Anonymous
есть что посоветовать?
Anonymous
кто нить делал связку symfony + saas ?
Anonymous
или как облачные crm реализованы ?
Konstantine
господа, киньте инфу, как через FOSUser можно авторизоваться через аякс, если у меня SPA прилажение?
Alexander
Я контроллер переопределял и отдавал ответ в json, на фронте скрипт отдавал на правильный урл данные. Там сложностей нет в целом, мне когда то казалось что архи сложно, а нет)
Аза
artem
Vladimir
Коллеги, доброго времени суток! У кого-то есть опыт использования symfony/ldap:4.3 с symfony 3.4?
B
Привет ;) есть норм книга по симфони 4 ?
✙Yevhenii
Есть вопрос интересный. Может кто знает или знает где есть норм статья…
Не могу найти инфы где и почему стоит использовать orphanRemoval=true, orphanRemoval=false, cascade={«remove», «persist», «all» и т.д.}, onDelete: cascade
И интересно глянуть как конкретно оно работает. Очень мало инфы гуглится или я не знаю как гуглить ((
✙Yevhenii
Написал и нашел в исходниках почти все ответы на ми вопросы 🙂
Dima
Богдан, а дока тебе зачем?
Dima
Лучше книг. Ещё есть сайт СимфониКаст вроде.
Maks
Дока конечно хорошо, но иногда не хватает книги в стиле "А сейчас детишки, мы шаг за шагом постоим сайтег на SF4"
Vadim
На сайте есть бест практис, кукбук, чем не книги? Можно почитать "Один год с Symfony", но там можно закопаться в работе контейнера, сервисов, компайлер пассов. Вряд ли это кому-то интересно на старте.
Сергей
Всем привет, очень нужна помощь :)
тема: AuthenticationProvider конфигурация. Не гуглится.
artem
Сергей
Имеется нестандартно настроенный LDAP сервер.
его фишка в том что ищет он юзеров по логину, а авторизовывает по ФИО (из dn после поиска) + пасс
стандартынй LdapAuthenticationProvider из коробки так не может. он с паролем тоже пихает логин.
для теста я в него сунул подмену логина на получений из dn ФИО и авторизация прошла.
Теперь мучаюсь как написать свое расширение типа MyLdapAuthenticationProvider и юзать его
Сергей
суть проблемы в подключении этого провайдера в кастомной же фабрике:
class MyFormLoginLdapFactory extends FormLoginLdapFactory {
protected function createAuthProvider(ContainerBuilder $container, $id, $config, $userProviderId) {
$provider = 'security.authentication.provider.ldap_bind.'.$id;
$definition = $container
->setDefinition($provider, new ChildDefinition(MyLdapBindAuthenticationProvider::class))
->replaceArgument(0, new Reference($userProviderId))
->replaceArgument(1, new Reference('security.user_checker.'.$id))
->replaceArgument(2, $id)
->replaceArgument(3, new Reference($config['service']))
->replaceArgument(4, $config['dn_string'])
;
...
->setDefinition($provider, new ChildDefinition(MyLdapBindAuthenticationProvider::class))
вот здесь
настройка конфига сервиса:
App\Security\Authentication\Provider\MyLdapBindAuthenticationProvider:
arguments:
$userProvider: '@Symfony\Component\Security\Core\User\UserProviderInterface'
$ldap: '@Symfony\Component\Ldap\Ldap'
$dnString: '{username}'
и собсно при попытке запуска setDefinition ругается :
Service "security.authentication.provider.ldap_bind.main": The argument "0" doesn't exist.
логгер выдает, что в аргументах которые ждет этот определитель
должно быть (видимо берет из конфига сервиса):
[id:Symfony\Component\DependencyInjection\Reference:private] => Symfony\Component\Security\Core\User\UserProviderInterface
[invalidBehavior:Symfony\Component\DependencyInjection\Reference:private] => 1
а получает откуда-то извне во время посторения система это:
[id:Symfony\Component\DependencyInjection\Reference:private] => security.user.provider.concrete.chain_provider
[invalidBehavior:Symfony\Component\DependencyInjection\Reference:private] => 1
и так ка кне совпадают то выдает ошибку
Сергей
и я уже неделю бьюсь, не могу найти почему так, и как это починить.
artem
Я не знаток в ди но что-то не видел реплейс через такой ключ
Сергей
какой?
artem
0, 1 итд. Мб просто сет дефинишн
artem
И да. Гист по вам плачет
Сергей
0,1 и т.д. скопировано с оригинальной лдап фабрики.
шо такое гист?
artem
gist.github.com мб сет параметр
Сергей
что бы им блядь всем пусто было.
Артем, респект и уважуха :)
вот оригинальная фабрика:
class FormLoginLdapFactory extends FormLoginFactory
{
protected function createAuthProvider(ContainerBuilder $container, $id, $config, $userProviderId)
{
$provider = 'security.authentication.provider.ldap_bind.'.$id;
$definition = $container
->setDefinition($provider, new ChildDefinition('security.authentication.provider.ldap_bind'))
->replaceArgument(0, new Reference($userProviderId))
->replaceArgument(1, new Reference('security.user_checker.'.$id))
->replaceArgument(2, $id)
->replaceArgument(3, new Reference($config['service']))
->replaceArgument(4, $config['dn_string'])
;
я с неё копировал и не работало.
сделал по совету Артема:
protected function createAuthProvider(ContainerBuilder $container, $id, $config, $userProviderId)
{
$provider = 'security.authentication.provider.ldap_bind.'.$id;
$definition = $container
->setDefinition($provider, new ChildDefinition(MyLdapBindAuthenticationProvider::class))
->replaceArgument('$userProvider', new Reference($userProviderId))
->replaceArgument('$userChecker', new Reference('security.user_checker.'.$id))
->replaceArgument('$providerKey', $id)
->replaceArgument('$ldap', new Reference($config['service']))
->replaceArgument('$dnString', $config['dn_string'])
;
и тут же заработало )))
ну вок как можно догадаться что надо заменить ключи?
artem
Легко. Когда знаешь где воняет
artem
А за гист я не просто так писал. Нечего сюда ковер присылать
artem
что бы им блядь всем пусто было.
Артем, респект и уважуха :)
вот оригинальная фабрика:
class FormLoginLdapFactory extends FormLoginFactory
{
protected function createAuthProvider(ContainerBuilder $container, $id, $config, $userProviderId)
{
$provider = 'security.authentication.provider.ldap_bind.'.$id;
$definition = $container
->setDefinition($provider, new ChildDefinition('security.authentication.provider.ldap_bind'))
->replaceArgument(0, new Reference($userProviderId))
->replaceArgument(1, new Reference('security.user_checker.'.$id))
->replaceArgument(2, $id)
->replaceArgument(3, new Reference($config['service']))
->replaceArgument(4, $config['dn_string'])
;
я с неё копировал и не работало.
сделал по совету Артема:
protected function createAuthProvider(ContainerBuilder $container, $id, $config, $userProviderId)
{
$provider = 'security.authentication.provider.ldap_bind.'.$id;
$definition = $container
->setDefinition($provider, new ChildDefinition(MyLdapBindAuthenticationProvider::class))
->replaceArgument('$userProvider', new Reference($userProviderId))
->replaceArgument('$userChecker', new Reference('security.user_checker.'.$id))
->replaceArgument('$providerKey', $id)
->replaceArgument('$ldap', new Reference($config['service']))
->replaceArgument('$dnString', $config['dn_string'])
;
и тут же заработало )))
ну вок как можно догадаться что надо заменить ключи?
И, кстати, все равно воняет
Сергей
а по конкретней?
artem
А за гист я не просто так писал. Нечего сюда ковер присылать
Maks
если с гистом не дружите, то можно https://paste.ofcode.org/
artem
ideone.com да где угодно. Главное чтобы простынь не читать
artem
Кстати, вот нужно скоро курс читать. И в курсе есть вагрант и докер. Вот не знаю, нужен ли сейчас вагрант тому же джуну?
Maks
а он кому то был нужен когдато?)
Kolya
artem
artem
Вроде приват. Мб в паблик выложат
artem
https://skillup.ua/lp/php-dnepr/
artem
Сразу говорю за тему выебничества. Я с курса получаю копейки. Мне для развития менторства
Kolya
Пасиб
Vadim