These are chat archives for LaravelRUS/chat

4th
Dec 2017
am0nshi
@am0nshi
Dec 04 2017 05:21 UTC

@Fector

    public function testTokenHasAccessToProfile_givenActualBearerToken_shouldReturnProperVirtualData()
    {
        $token = $this->testPassportTokenGeneration_givenNormalCredentials_shouldReturnActualToken();
        $response = $this->get(url('api/me/testprofileaccess'), [
            'Accept' => 'application/json',
            'Authorization' => 'Bearer ' . $token,
            'X-Requested-With' => 'XMLHttpRequest'
        ]);
        $response->assertExactJson(["status" => "ok"]);
    }

не, не в курсе :D

@DoctorLines можно выключить автодискавери в композер джсоне
Fector
@Fector
Dec 04 2017 06:34 UTC
@am0nshi все равно 401. Я вставил руками живой токен из постмана. Token Signature could not be verified.
@am0nshi и все равно не понимаю почему не могу отключить этот мидлвар с помощью $this->withoutMiddleware(['jwt.auth'])
am0nshi
@am0nshi
Dec 04 2017 07:38 UTC
потому что как минимум это Api:auth
Fector
@Fector
Dec 04 2017 08:02 UTC
@am0nshi не очень понял про как минимум, можешь поподробнее? вроде в документации все просто описано, но с jwt.auth ничего не получается
Denis Mazur
@lans8097
Dec 04 2017 11:09 UTC
Всем добра.
Извините за вопрос не в тему =0.
Посоветуйте Git Менеджер которому можно указывать стороние git сервера =)
Vlad Shcherbin
@VladShcherbin
Dec 04 2017 11:23 UTC
@lans8097 tower должен подойти
Denis Mazur
@lans8097
Dec 04 2017 11:44 UTC
@VladShcherbin тошо надо )
@VladShcherbin спасибо
KarmaBot
@KarmaBot
Dec 04 2017 11:44 UTC
Спасибо (+1) для @VladShcherbin принято! Текущая карма +105.
Pavel Lankmiler
@pavell-hyuna
Dec 04 2017 13:16 UTC
Привет. Хочу спросить совета. Есть сайтик на laravel. Используется laravel-cart на нем(модуль типа "корзина"). Так вот... Заполняется форма для заказа какой-то услуги, после отправки формы попадаем на чекаут и после чекаута снимает деньги у клиента. Сам charge написан вручную - модуль только функцию корзины дает. В общем количестве 3 экшна в контроллере - форма, чекаут и чардж. В последнем экшне (charge) есть кое-какие действия - к примеру создаются пару записей в базе данных и после этих действий производится сам чардж. Эти действия зависят от продукта который попал в корзину. Вопрос в том как сделать это более гибко (вот эти действия, которые зависят от продукта) - потому, что сейчас это все захардкоденно. Может кто-то подтолкнет в правильное русло меня.
Pavel Lankmiler
@pavell-hyuna
Dec 04 2017 13:22 UTC
Ивенты чуть похожи по сути. Но не нравится что все лисенеры будут запускаться. Знаю что можно оборвать работу лисенера обычным return, но не то...
OsipovMN
@projct1
Dec 04 2017 14:57 UTC

пытаюсь пробросить событие event(new CallOrderCreated(Order::first()));

class CallOrderCreated implements ShouldBroadcastNow
{
    public $order;

    public function __construct(Order $order)
    {
        $this->order = $order;
    }

    public function broadcastOn()
    {
        return new PrivateChannel('calltouch');
    }
}

предварительно подписавшись на него:

window.Echo.private('calltouch').listen('CallOrderCreated', response => {
    console.log(response);
});

почему-то не срабатывает
авторизацию проходит, всё нормуль

согласно документации, название события соответствует названию класса https://laravel.com/docs/5.5/broadcasting#defining-broadcast-events
пробовал с маленькой буквы callordercreated, всё равно не пашет :(

если добавляю метод:

    public function broadcastAs()
    {
        return 'call.order.created';
    }

и подписываюсь .listen('.call.order.created', то норм

OsipovMN
@projct1
Dec 04 2017 15:03 UTC
почему через название класса не работает? ((
MrKryger
@MrKryger
Dec 04 2017 15:05 UTC
попробуй путь прописать App\Events\CallOrderCreated'
OsipovMN
@projct1
Dec 04 2017 15:13 UTC
@MrKryger не, не пашет (
Lander931
@Lander931
Dec 04 2017 15:13 UTC

Всем привет.
Есть роут

Route::get('auto/{brand}/{carModel}',"CarModelController@show");

как правильно проверять что $carModel->brand_id == $brand->id?
Как я понял что Policy и Gate работают с юзером, а тут как-бы просто роут, юзер-гость.
В каждом методе контроллеров проверять же не вариант...

OsipovMN
@projct1
Dec 04 2017 15:15 UTC
@MrKryger в доках стоит без полного пути
OsipovMN
@projct1
Dec 04 2017 15:24 UTC
@Lander931 мидлвер создать если?
Lander931
@Lander931
Dec 04 2017 17:54 UTC
@projct1 можно, только в реквест прилетят походу строки а не модели
@projct1 а делать запрос к базе из мидлвари не камильфо
Andrey
@daaner
Dec 04 2017 18:39 UTC
Дан мутатор для создания алиаса из поля name, подключен к РАЗНЫМ моделям. Как сделать, чтоб в этом же мутаторе проверялась уникальность генерированного/указанного алиаса из таблицы каждой модели?
Andrei Sosnov
@atehnix
Dec 04 2017 19:03 UTC
@Daaner
if (static::where('alias',  $alias)->count()) {
    // Oops! Alias allready exists!
}
Andrey
@daaner
Dec 04 2017 19:07 UTC
@atehnix тогда уже >1 нужно ставить, оно же само себя может найти
если редактировать
а не, сорь
@atehnix спасибо
KarmaBot
@KarmaBot
Dec 04 2017 19:11 UTC
Спасибо (+1) для @atehnix принято! Текущая карма +248.
Andrei Sosnov
@atehnix
Dec 04 2017 19:40 UTC
@Daaner хотя, вместо count() лучше exists(). Это более очевидно)
Andrey
@daaner
Dec 04 2017 19:40 UTC
@atehnix а как передать ID, чтоб исключить? А то при редактировании оно все же находит себя и применяет правило
Andrei Sosnov
@atehnix
Dec 04 2017 19:41 UTC
@Daaner $this->id, очевидно)
Andrey
@daaner
Dec 04 2017 19:42 UTC
все) как раз разобрался)
туплю
Andrei Sosnov
@atehnix
Dec 04 2017 19:44 UTC
@Daaner Только учти, что при создании id еще нет. Он есть только при редактировании.
@Daaner
if (static::where('alias', $alias = str_slug($name))->exists()) {
    $alias = "{$alias}-{$this->id}";
}
$this->attributes['alias'] = $alias;
Andrei Sosnov
@atehnix
Dec 04 2017 19:56 UTC
Но если так ^, то создание алиаса нужно вынести в событие модели created, чтобы к этому моменту точно был id.
Andrey
@daaner
Dec 04 2017 20:05 UTC
@atehnix у меня в сеттере это...
а он получает до события креат((( ща подумаю
Andrey
@daaner
Dec 04 2017 20:43 UTC
@atehnix чуть по другому сделал. Сильно говнокодно?
ссыль
и подключаю к моделям, к которым нужно
Murad
@Muradg
Dec 04 2017 20:49 UTC
Доброй ночи. Кто нибудь использовал JWT ?
Andrey
@daaner
Dec 04 2017 20:52 UTC
@Muradg я нет, смотрел... плюнул и сам написал под родной контроллер
Murad
@Muradg
Dec 04 2017 20:53 UTC
@Daaner у тебя есть опыт в написании API ? К примеру конкретно нужна помощь по POST запросам, а именно проблема в токене :)
Andrey
@daaner
Dec 04 2017 20:55 UTC
@Muradg отправляй запрос, если ошибка токена - обнови его и отправь заново. ну или перед отправкой запроса сразу делай новый токен. Все ж просто
Murad
@Muradg
Dec 04 2017 20:55 UTC
@Daaner токен вручную подставлять ?
Andrey
@daaner
Dec 04 2017 20:56 UTC
рас
  function verify_csrf() {
    $.ajax({
      url: '/csrf-token',
      type: 'GET',
      cache: false,
      async: false,
      success: function(data) {
        $('meta[name="csrf-token"]').attr('content', data);
      }
    });
  };
дыва, перед сабмитом
verify_csrf();
Murad
@Muradg
Dec 04 2017 20:58 UTC
@Daaner а к примеру если я отправляю запрос с телефона ? К API моего сайта. Токен как получить то ?
Andrey
@daaner
Dec 04 2017 20:58 UTC
тыыыыри
  public function VerifyToken (Request $request)
  {
    $request->session()->regenerate();
    return csrf_token();
  }
в роутах апишных
weber3
@weber3
Dec 04 2017 21:00 UTC
return response()->json([$validator->errors()->all()],500); Кто подскажет как получить key - ключ ошибки key=>val
Andrey
@daaner
Dec 04 2017 21:03 UTC
dd? @weber3
weber3
@weber3
Dec 04 2017 21:04 UTC
@Daaner ajax пробую сразу, сделал each - выводит ключ 0 => и верное сообщение, но ключ то другой
Andrei Sosnov
@atehnix
Dec 04 2017 21:05 UTC

@Daaner

Сильно говнокодно?

ага. Я бы так не оставил.
Хотя, это довольно расплывчатое понятие.. ) Может кому-то и так норм))

Murad
@Muradg
Dec 04 2017 21:05 UTC
@Daaner можно поподробнее ? Вот к примеру я отправляю запрос на авторизацию. /api/login , отправляю email и password. Но токена нет. Получается его мне нужно получить перед отправкой самого запроса и передать в запрос
Andrey
@daaner
Dec 04 2017 21:10 UTC
@Muradg ну да, перед отправкой формы получи токен, вставь куда тебе там нужно и потом отправляй все вместе. Сделай отдельный роут на получение токена по запросу
и токен не успеет протухнуть, если ты срок жизни поставишь 5-10 сек даже