Задать вопрос
  • Есть ли вероятность прилёта ответственности?

    @MrPofix
    Так если они сами вписывают данные на бумаге, какая разница, будет ли это в электронном виде?)
    По мне - так идея хорошая. Если приживется, юридические моменты можно будет решить в процессе. Одно дело, если это Saas платформа (а там другие орг.вопросы типа защиты данных, верификация отправителя (может, ЭЦП), и т.д.), другое - небольшой стартап для узкого круга лиц.
    Ответ написан
    1 комментарий
  • Как в Apollo (GraphQL) менять урл запроса (эндпоинта)?

    @MrPofix Автор вопроса
    В общем, решения по моему вопросу так и не нашёл. Кто задался таким же вопросом - рассказываю, как решил задачу.

    Я использую библиотеку https://github.com/rebing/graphql-laravel
    В конфигах есть настройка схем, ну я и настроил изначально общие роуты под default, приватные - под auth:
    'schemas' => [
            'default' => [
                'query' => [
                    \App\Http\GraphQL\Queries\UserQuery::class,              
                ],
                'mutation' => [
                    'createUser' => \App\Http\GraphQL\Mutations\CreateUserMutation::class,              
                ],
                'middleware' => [ ],
                'method' => ['get', 'post'],
            ],
    
            'auth' => [
                'query' => [
                    \App\Http\GraphQL\Queries\GetMyProfileQuery::class,              
                ],
                'mutation' => [],
                'middleware' => [
                    'api'
                ],
                'method' => [ 'post'],
            ],
        ],


    В итоге перенёс все роуты в блок default:
    'schemas' => [
            'default' => [
                'query' => [
                    \App\Http\GraphQL\Queries\UserQuery::class,             
                     \App\Http\GraphQL\Queries\GetMyProfileQuery::class,              
                ],
                'mutation' => [
                    'createUser' => \App\Http\GraphQL\Mutations\CreateUserMutation::class,              
                ],
                'middleware' => ['jwtAuth' ],
                'method' => ['get', 'post'],
            ],
        ],


    Сделал Middleware (jwtAuth), который по JWT токену пытается авторизовать юзера (если токен передан - авторизует).

    Для приватных роутов сделал базовый класс с проверкой на авторизацию (соответственно, все приватные контроллеры наследую от него):

    abstract class _BaseQuery extends Query
    {
        public function authorize(
            $root,
            array $args,
            $ctx,
            ResolveInfo $resolveInfo = null,
            Closure $getSelectFields = null
        ): bool {
            return Auth::check();
        }
    }


    Таким образом, задача решена. Но чувство прекрасного страдает, так как мне не нравится такое решение )
    Если нет возможность менять УРЛ запроса, то к чему настройки схемы в rebing/graphql-laravel...

    UPD. Спустя несколько дней разработки, случайно наткнулся на решение:
    import { ApolloClient, HttpLink, InMemoryCache } from "@apollo/client";
    import { RetryLink } from "@apollo/client/link/retry";
    
    const directionalLink = new RetryLink().split(
      (operation) => operation.getContext().version === 1,
      new HttpLink({ uri: "http://localhost:4000/v1/graphql" }),
      new HttpLink({ uri: "http://localhost:4000/v2/graphql" })
    );
    
    const client = new ApolloClient({
      cache: new InMemoryCache(),
      link: directionalLink,
    });

    https://www.apollographql.com/docs/react/data/erro...
    Ответ написан
    Комментировать
  • Laravel выкидывает ошибку 419 у некоторых пользователей?

    @MrPofix
    419 ошибка может возникать из-за устаревшего XSRF токена. Если пользователь открыл страницу авторизации и, например, только через полчаса решил авторизоваться, поймают такую ошибку. Перепроверьте, все ли в порядке с токенами (может в вашем алгоритме авторизации они не всегда отправляются корректно). На крайний случай, чтобы исключить эту причину, попробуйте временно отключить проверку на токен вообще.
    Ответ написан
    Комментировать
  • Как использовать Rest API в Laravel отдельно от сайта Laravel?

    @MrPofix
    Если у вас новый проект, то нет смысла заниматься преждевременной оптимизацией (если вы для этих целей планируете).
    Сделайте то, что получится быстрее, тестируйте нишу, развивайте проект. Когда упрётесь в потолок производительности сервера (а это не всегда "скоро"), то допишете/перепишете проект. Да и по опыту скажу, что к этому времени по-любому происходит значительное изменение кодовой базы. Поэтому: усложнить всегда успеете.
    Ответ написан
    Комментировать
  • Как победить 502 ошибку при работе с Laravel-echo-server?

    @MrPofix Автор вопроса
    Не знаю, в чем проблема, но я нашел решение.
    Я обновил Nginx до 1.19.1, возможно, установил дополнительные модули, когда пытался собрать Nginx из исходников.
    Установил npm не глобально, а локально - может это тоже как-то повлияло.

    Внимание: это работает, только если вы напишете location /socket.io.
    Ни один другой location не работает, именно такой!
    Ответ написан
    Комментировать
  • Почему Nginx не меняет протокол на WebSocket?

    @MrPofix Автор вопроса
    Не знаю, в чем проблема, но я нашел решение.
    Я много чего обновил: Nginx до 1.19.1, возможно, установил дополнительные модули. Установил npm не глобально, а локально.
    И в какой-то момент оно начало работать как нужно. До сих пор не понимаю в чем дело)

    Внимание: это работает, только если вы напишете location /socket.io.
    Ответ написан
    Комментировать