• Как добавить первичного администратора в Symfony?

    BoShurik
    @BoShurik Куратор тега Symfony
    Symfony developer
    Если используется FOSUserBundle, то надо использовать команду
    bin/console fos:user:create username em@ai.il 'p@55w0rd'
    .

    В случае своего решения, эта команду надо создать самому. У меня она выглядит как-то так (по сути повторяет код экшена контроллера со своими нюансами)

    CreateCommand

    /**
     * @psalm-suppress PropertyNotSetInConstructor
     */
    class CreateCommand extends AbstractCommand
    {
        private DocumentManager $documentManager;
        private ValidatorInterface $validator;
        private PasswordGenerator $passwordGenerator;
        private AdministratorMapper $mapper;
    
        public function __construct(
            DocumentManager $documentManager,
            ValidatorInterface $validator,
            PasswordGenerator $passwordGenerator,
            AdministratorMapper $mapper
        ) {
            parent::__construct();
    
            $this->documentManager = $documentManager;
            $this->validator = $validator;
            $this->passwordGenerator = $passwordGenerator;
            $this->mapper = $mapper;
        }
    
        /**
         * @psalm-suppress MissingReturnType
         */
        protected function configure()
        {
            $this
                ->setName('app:administrator:create')
                ->addArgument('username', InputArgument::REQUIRED, 'Username')
                ->addOption('password', 'p', InputOption::VALUE_REQUIRED, 'Password')
                ->setDescription('Creates administrator')
            ;
        }
        
        protected function execute(InputInterface $input, OutputInterface $output)
        {
            /** @var string $username */
            $username = $input->getArgument('username');
            /** @var string|null $plainPassword */
            $plainPassword = $input->getOption('password');
            if (!$plainPassword) {
                $plainPassword = $this->passwordGenerator->generate();
            }
    
            $model = new AdministratorModel();
            $model->enabled = true;
            $model->username = $username;
            $model->password = $plainPassword;
    
            $errors = $this->validator->validate($model);
            if (\count($errors) > 0) {
                $this->io->error('Can\'t create administrator');
                $this->printConstraintViolations($errors);
    
                return 1;
            }
    
            $administrator = $this->mapper->map($model);
    
            $this->documentManager->persist($administrator);
            $this->documentManager->flush();
    
            $this->io->writeln(sprintf('Administrator <info>%s</info> with password <info>%s</info> has been created', $administrator->getUsername(), $plainPassword));
    
            return 0;
        }
    }



    bin/console app:administrator:create vasx3

    Создавать пользователей, а тем более администраторов, через миграции и фикстуры - риск, т.к. в случае утечки кода все эти данные будут доступны третьим лицам
    Ответ написан
  • Как убрать css стили, которые вставляются битриксом на каждом landing?

    Alexufo
    @Alexufo Автор вопроса
    противоречивый, сложный, весь компьютерный.
    Ответ в следующем. Этого нет в документации, они решили не описывать ее до конца.

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

    $eventManager = \Bitrix\Main\EventManager::getInstance();
    $eventManager->addEventHandler('landing', 'onHookExec',
       function(\Bitrix\Main\Event $event)
       {
          $result = new \Bitrix\Main\Entity\EventResult;
    
          $result->modifyFields([ 
             'ThemeFonts' => function(/** @var \Bitrix\Landing\Hook\Page $hook */ $hook)
             {	
                 \Bitrix\Landing\Manager::setPageView(
                    'ThemeFonts', 
                  '' 
                 );
    
    
                  //обязательно вернуть true, если НЕ требуется выполнение системного
                return true;
             }
          ]);
    
          return $result;
       }
    );
    Ответ написан
  • Как выполнить правильно миграцию Laravel?

    batyrserseri
    @batyrserseri
    Создай новую миграцию и возпользуйся методом change
    Schema::table('users', function (Blueprint $table) {
        $table->string('name', 50)->change();
    });

    https://laravel.com/docs/5.8/migrations#columns
    Ответ написан
  • Есть ли простая методика защиты от curl-спама?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    капча
    лимит на количество запросов
    не создавать никакие аккаунты без данных и формы заполненной
    Ответ написан