These are chat archives for LaravelRUS/chat

8th
Mar 2016
Dave
@aios
Mar 08 2016 01:15
@jhaoda Ну провайдер для авторизации
blackgremlin
@blackgremlin
Mar 08 2016 05:14
Ребят, привет, столкнулся с такой вот проблемой:
Route::group(['middleware' => ['web']], function () {
    Route::get('admin/login', ['as' => 'admin.login.form', 'uses' => 'Auth\AuthController@adminForm']);
    Route::post('admin/login', ['as' => 'admin.login.post', 'uses' => 'Auth\AuthController@adminLogin']);
});

Route::group(['middleware' => ['web', 'admin'], 'prefix' => 'admin'], function () {
    Route::get('/', ['as' => 'admin.dashboard', 'uses' => 'Admin\DashboardController@index']);
});
имею вот такие, роуты, как в примере выше
вот такие middleware:
protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'admin' => \App\Http\Middleware\Admin::class,
    ];
и непосредственно middleware Admin:
class Admin
{
    public function handle($request, Closure $next)
    {
        $user = $request->user();
        if (empty($user) || !$user->hasRole('admin')) {
            return redirect()->route('admin.login.form');
        }
        return $next($request);
    }
}
Laravel 5.2.22, при входе на /admin отображается сообщение Redirect to ..., и после этого происходит редирект, аналогично работает middleware Auth, т.е. перед редиректом отображает сообщение о том, что сейчас будет редирект
blackgremlin
@blackgremlin
Mar 08 2016 05:20
При чем вот этот вот код вполне корректно работает на 5.2.12 на другом проекте, а на текущей 5.2.22 происходит вот такая история, может кто сталкивался и сможет подсказать в каком направлении искать? Буду благодарен.
Maxim
@Big-Shark
Mar 08 2016 05:35
@devweb99 ты читаешь что тебе бот пишет в ответ?
Kirill Nesmeyanov
@SerafimArts
Mar 08 2016 05:38
@Big-Shark а бот что-то написал, да?
Maxim
@Big-Shark
Mar 08 2016 05:40
@SerafimArts угу у том что не надо такие портянки кидать сюда, там код на весь экран, да еще и такой что травмирует психику.
Юрий
@sawerus
Mar 08 2016 06:09
@blackgremlin незнаю как другие, но нихрена не понял в чем проблема. @Big-Shark он портянку скинул и пошел спать. Решайте типа задачу. ..
Maxim
@Big-Shark
Mar 08 2016 06:10
@sawerus сегодня придет проверит решение у всех.
@sawerus я тоже не понял в чем проблема у @blackgremlin
blackgremlin
@blackgremlin
Mar 08 2016 07:19
@Big-Shark, @sawerus , проблема в том, что вместо прямого редиректа на /admin/login сначала показывается сообщение: "Redirecting to /admin/login", и спуся примерно секунду происходит переадресация.
blackgremlin
@blackgremlin
Mar 08 2016 07:41
Извиняюсь за маленький размер картинки, выглядит проблема вот так nah.gif
Юрий
@sawerus
Mar 08 2016 07:52
@blackgremlin дело конечно твое, но лучше бы время на решение своей проблемы потратил, а не на создание этой анимации.
blackgremlin
@blackgremlin
Mar 08 2016 07:55
@sawerus анимашка за ~1 минуту создалась, а на решение я уже потратил пару часов, но пока проблема осталась, я не рассчитываю особо на помощь и пытаюсь решить сам, но если вдруг кто уже сталкивался или знает в чем дело, был бы признателен
Sergey Protko
@fesor
Mar 08 2016 08:00
@blackgremlin это означает что в буфер вывода уже что-то было отправлено, перед тем как редирект начинался.
@blackgremlin ну мол где-то echo сделал или может BOM в файликах затесался
ну мол, если хотя бы один байт ушел в буфер вывода, то ты уже не можешь поменять заголовки ответа, так как уже начало формироваться тело
blackgremlin
@blackgremlin
Mar 08 2016 08:12
@fesor спасибо, так и оказалось, лишний пробел затесался
KarmaBot
@KarmaBot
Mar 08 2016 08:12
Спасибо (+1) для @fesor принято! Текущая карма +54.
Kirill Nesmeyanov
@SerafimArts
Mar 08 2016 09:25
Всё
Я закончил развлекаться с зефиром
ну почти
Dinar Garipov
@garf
Mar 08 2016 09:29
@SerafimArts Берист теперь за торт Прага. :)
Kirill Nesmeyanov
@SerafimArts
Mar 08 2016 09:29
@gaaarfild прага?
Dinar Garipov
@garf
Mar 08 2016 09:29
@SerafimArts Торт!
Kirill Nesmeyanov
@SerafimArts
Mar 08 2016 09:30
я успел прикрутить к этому исходники на шарпе, фреймворк для анализа изображений и directx
осталось использовать эту шняжку у себя в игре для анимации персонажей :D
кстати хорошая идея...
хммм
Dinar Garipov
@garf
Mar 08 2016 09:33
А дашь поиграть диск?
А у меня без диска будет идти?
Kirill Nesmeyanov
@SerafimArts
Mar 08 2016 09:33
лал
Artemiy Ryabinkov
@Furdarius
Mar 08 2016 09:36

:point_up: March 8, 2016 12:33 PM

Ахах)

Maxim Morozov
@m-a-x-i-m
Mar 08 2016 09:56
Ребят, я правильно понимаю что Form Request предназначен для валидации запросов, т.е. тот же посредник? Если да, то в каких случаях лучше использовать запросы формы, вместо посредников. В чем его принципиальное отличие от посредников?
Dinar Garipov
@garf
Mar 08 2016 09:57
@M-a-x-i-m Посредник - немного другую задачу выполняет. Форм реквест работает конкретно с реквестом.
@M-a-x-i-m Всмысле с формой.
Maxim
@Big-Shark
Mar 08 2016 09:58
@M-a-x-i-m ну посредник не должен валидировать запрос, а просто проксирует его
Dinar Garipov
@garf
Mar 08 2016 09:58
И там реализована вся логика для валидирования.
Maxim
@Big-Shark
Mar 08 2016 09:58
@gaaarfild ну всеж не с формой, а с реквестом, вообще мне кажется глупое название форм реквест
Dinar Garipov
@garf
Mar 08 2016 09:59
@Big-Shark Ну ты меня понял :smile: Я чуваку объясняю ж ))
Maxim Morozov
@m-a-x-i-m
Mar 08 2016 10:03
@Big-Shark Т.е. для валидации все-же лучше запросы формы использовать, там же проверку на авторизацию можно выполнить, проверку принадлежности запрашиваемового объекта пользователю? Тогда какой функционал лучше пихать в посредники?
Dinar Garipov
@garf
Mar 08 2016 10:06
@M-a-x-i-m Проверку на аутентификацию лучше делать в посредниках конечно. Потому что посредники можно присвоить группе роутов, таким образом защитив из от неавторизованных юзеров.
Maxim
@Big-Shark
Mar 08 2016 10:06
@M-a-x-i-m пропервку доступа допустим, трансформации всяких запросов, и тд
Kirill Nesmeyanov
@SerafimArts
Mar 08 2016 10:09
This message was deleted
Не, нафиг, слишком много оффтопа
Maxim Morozov
@m-a-x-i-m
Mar 08 2016 10:12
@Big-Shark @gaaarfild спасибо за объяснение
KarmaBot
@KarmaBot
Mar 08 2016 10:12
Спасибо (+1) для @Big-Shark принято! Текущая карма +709.
Спасибо (+1) для @gaaarfild принято! Текущая карма +106.
Ivan
@Hunternnm
Mar 08 2016 11:45
Всем бобра!
Если есть дамы - с праздником!
@SerafimArts thx за видео!
KarmaBot
@KarmaBot
Mar 08 2016 11:47
Спасибо (+1) для @SerafimArts принято! Текущая карма +289.
Romeo
@webds
Mar 08 2016 12:20
Привет народ
Pavel Kuzmin
@s00d
Mar 08 2016 12:20
Всем привет, а в AuthController есть какаято функция в которой id пользователя при авторизации уже получено? нужно добавить проверку по Id
KarmaBot
@KarmaBot
Mar 08 2016 12:20
@Virus191288, привет, как настроение?
JhaoDa
@jhaoda
Mar 08 2016 12:24
@s00d шта?
Romeo
@webds
Mar 08 2016 12:24

Что то мой мозг тормозит видимо) Ситуация. Есть View который подгружает шаблон в котором к есть ошибка (например $content - не определенная переменная ) Получаю ошибку . Как ее отловить? и игнорировать?

Делал так.. но понимаю что это не верно, так как ошибку получаю внутри view

 try {
                       // view()->getExtensions();
                        $content .= (string)view()->file($pathModule, $Module['data']);
                    }catch (\Exception $e){
                        var_dump ($e);
                    }
JhaoDa
@jhaoda
Mar 08 2016 12:25
@webds тебя не затруднит отступы поправить и пробелов добавить в нужных местах?
Romeo
@webds
Mar 08 2016 12:25
@jhaoda нет. а какотредактиовать?
Alexander
@Dualse
Mar 08 2016 12:26
@jhaoda Что-то в тебе изменилось
JhaoDa
@jhaoda
Mar 08 2016 12:26
@webds ты тут не первый месяц, но не знаешь как редактировать? Наведи мыша на сообщение, увидишь иконки в углу
@Dualse да задолбали уже
Alexander
@Dualse
Mar 08 2016 12:27
@webds Ты же можешь во вьюхе проверить переменную, существует она или нет
JhaoDa
@jhaoda
Mar 08 2016 12:27
@webds сочувствую
@Dualse я-то могу...
Alexander
@Dualse
Mar 08 2016 12:27
@jhaoda Промазал)
Pavel Kuzmin
@s00d
Mar 08 2016 12:27
@jhaoda в общем нужно добавить данные при авторизации в таблицу, где есть user_id, возможно в AuthenticatesUsers уже есть функция которая получила id юзера, но срабатывает только при авторизации.
JhaoDa
@jhaoda
Mar 08 2016 12:28
@webds с телефона сидишь?
@s00d при аутентификации, ты хотел сказать
Pavel Kuzmin
@s00d
Mar 08 2016 12:28
@jhaoda да
JhaoDa
@jhaoda
Mar 08 2016 12:28
@s00d хотя я всё равно не понимаю
@s00d а раз хотел, то почему не сказал?
Romeo
@webds
Mar 08 2016 12:29
@Dualse Да, могу. но есть один нюанс. Мне нужно игнорировать любые ошибки, если они возникают во view.
Pavel Kuzmin
@s00d
Mar 08 2016 12:30
@jhaoda незнаю
Alexander
@Dualse
Mar 08 2016 12:30
@webds Игнорировать или избавиться от ошибки?
JhaoDa
@jhaoda
Mar 08 2016 12:31
@s00d если тебе нужен какой-то функционал в методе аутентификации, то переопредели метод и напиши нужное
Pavel Kuzmin
@s00d
Mar 08 2016 12:32
@jhaoda это и бабке моей понятно, нужно найти метод в котором есть id, уже пол часа по исходникам лары копаюсь
Romeo
@webds
Mar 08 2016 12:32

@Dualse Игнорировать. Грубо говоря алгоритм такой: Если есть ошибка - игнорировать или отловить , обработать и уже вывести какое то уведомление.

Работает у меня все так:
Есть некий один шаблон и позиции в шаблоне. В каждую позицию подгружается отдельный модуль. Так вот если есть ошибка в модуле - его просто не буду подгружать - а выведу уведомление о том что в таком то модуле есть ошибка синтаксиса и.т.д

JhaoDa
@jhaoda
Mar 08 2016 12:33
Вот что ему ответить? Только маты приходят на ум...
Dinar Garipov
@garf
Mar 08 2016 12:34
@webds А ты не пробовал по ларавелевски делать?
@webds Почитай про ВьюКомпозеры!
Давно я этого не говорил =)
Alexander
@Dualse
Mar 08 2016 12:35
@webds Твои вкусы достаточно специфичны
Maxim
@Big-Shark
Mar 08 2016 12:35
@jhaoda забей, я вот жалею что нет функции, игнорировать.
Romeo
@webds
Mar 08 2016 12:36
@Dualse та нет, не специфичны. Это так кажется.
Dinar Garipov
@garf
Mar 08 2016 12:36
@Big-Shark Ему как раз нужна функция игнорировать... ошибки во вью. :)
Romeo
@webds
Mar 08 2016 12:36
@gaaarfild Мне не нужна функция
Maxim
@Big-Shark
Mar 08 2016 12:36
@gaaarfild пускай он сделает такую в гитере, а потом может и у себя сделаешь)
Alexander
@Dualse
Mar 08 2016 12:37
@webds А можешь объяснить саму задачу?
Andrei Sosnov
@atehnix
Mar 08 2016 12:37
@Big-Shark я тоже давно жалею..)
Bohdan
@bogdan8
Mar 08 2016 12:50
как в ORM написать не равен?
Maxim
@Big-Shark
Mar 08 2016 12:51
@bogdan8 также как в mysql?
Bohdan
@bogdan8
Mar 08 2016 12:52
@Big-Shark я писал так 'name_note' <> 'gdlx'и выбивает ошибку
Alexander
@Dualse
Mar 08 2016 12:52
@bogdan8 Прям так написал? или с запятыми?
Bohdan
@bogdan8
Mar 08 2016 12:52
@Dualse return $this->where(['user_id' => $user_id, 'name_note' <> 'gdlx'])->paginate(7);
и такая ошибка
SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'where clause' (SQL: select count(*) as aggregate from `note` where (`user_id` = 1 and `0` = 1))
Alexander
@Dualse
Mar 08 2016 12:54
@bogdan8
$users = DB::table('users')->where('votes', '=', 100)->get();
Понял же в чем разница?
JhaoDa
@jhaoda
Mar 08 2016 12:55
@bogdan8 парень, ты серьезно???
Andrei Sosnov
@atehnix
Mar 08 2016 12:55
@bogdan8, а в этой части 'user_id' => $user_id, по твоей логике, получается "больше или равно"? :)
Спасибо, улыбнуло)
JhaoDa
@jhaoda
Mar 08 2016 12:56
@atehnix :+1:
Bohdan
@bogdan8
Mar 08 2016 12:58
@atehnix почему улыбнуло это же хэш, этим => мы передаем значение в хэш, что здесь не так?
Alexander
@Dualse
Mar 08 2016 12:58
This message was deleted
Maxim
@Big-Shark
Mar 08 2016 12:59
ОМГ
Dinar Garipov
@garf
Mar 08 2016 12:59
@bogdan8 Почему это вообще PHP пропустил???
['user_id' => $user_id, 'name_note' <> 'gdlx']
Как это может не вызвать ошибку интерпретатора?
Или это типа битовые операции?
Bohdan
@bogdan8
Mar 08 2016 13:00
@gaaarfild 'name_note' <> 'gdlx' это он не пропускал выбило ошибку здесь я тупанул
'user_id' => $user_id а здесь все хорошо
Romeo
@webds
Mar 08 2016 13:01

@Dualse Да, конечно. Все очень просто. Пишу CMS. c модулями, плагинами и т.д
Работает все просто.

  1. Route -> Controller - > View содержимое главного контента
  2. Потом Идет сборка и заполнение шаблона.
    2.1 Шаблон имеет одну точку входа с тегами - метками позиций для вставки содержимого.
    2.2 При сборке шаблона подгружаются и выполняются модули cms, которые связаны с данной страницей по условию: route, lang, position

Вот в принципе и все.
Суть вопроса в том: как отловить Exception View ()

Dinar Garipov
@garf
Mar 08 2016 13:01
@bogdan8 Там все хорошо. Но передавать сравнения в массиве ты можешь только для условий '='
@bogdan8 Иначе надо чейнить еще один where()
Alexander
@Dualse
Mar 08 2016 13:01
@bogdan8 Я же тебе показал пример, как надо правильно where использовать. Хотя @jhaoda за такое ругает, и всегда посылает доки читать
Maxim
@Big-Shark
Mar 08 2016 13:02
Dinar Garipov
@garf
Mar 08 2016 13:03
@bogdan8 Конкретно в твоем случае:
return $this->where('user_id', $user_id)->where('name_note', '!=', 'gdlx')->paginate(7);
Bohdan
@bogdan8
Mar 08 2016 13:03
@Dualse ну это ты написал это надо в контроллере выполнять а в модели как записать чтобы не равно тому значению или никак?
Dinar Garipov
@garf
Mar 08 2016 13:03
@Big-Shark А ну да :) Операция сравнения )) Логично :)
Bohdan
@bogdan8
Mar 08 2016 13:03
@gaaarfild спасибо вот то что я искал
KarmaBot
@KarmaBot
Mar 08 2016 13:03
Спасибо (+1) для @gaaarfild принято! Текущая карма +107.
Alexander
@Dualse
Mar 08 2016 13:12
@gaaarfild != - используется, т.к. коллекция?
Andrey Helldar
@andrey-helldar
Mar 08 2016 13:43
Всем привет! Народ, кто юзает поисковую машину в проекте? Подскажите какие варианты стоит рассматривать? Мне подкинули SphinxSearch, но, думаю, есть же варианты получше?
KarmaBot
@KarmaBot
Mar 08 2016 13:43
@AndreyHelldar, и тебе привет ;)
Dinar Garipov
@garf
Mar 08 2016 13:45
@Dualse То есть? Я просто не люблю <>
Maxim
@Big-Shark
Mar 08 2016 13:46
@andrey-helldar ну есть еще эластик, но особо пофиг
Andrey Helldar
@andrey-helldar
Mar 08 2016 13:48
@Big-Shark Дали на тест базу с 70к+ данными в MySQL, вот думаю чего б придумать на быстрый поиск с минимальной нагрузкой на саму БД.
Alexander
@Dualse
Mar 08 2016 13:49
@gaaarfild Ну в mysql же нету такого оператора !=, там <>. Вот поэтому и думал, что если работаешь с моделью, то юзаешь <>, а если с коллекцией, то можно !=. Как-то так) Или в mysql != тоже можно использовать?
Dinar Garipov
@garf
Mar 08 2016 13:51
@Dualse Откуда такая инфа? :)
Там есть все :)
Alexander
@Dualse
Mar 08 2016 13:52
@gaaarfild http://www.mysql.ru/docs/man/Comparison_Operators.html вот тут смотрел. А все, увидел и там)
Dinar Garipov
@garf
Mar 08 2016 13:52
@andrey-helldar Придумай индексы.
Andrey Helldar
@andrey-helldar
Mar 08 2016 13:54
@gaaarfild зачем придумывать то, что уже существует?) Под рукой один из движков, от которого и отталкиваюсь в сравнении.
Dinar Garipov
@garf
Mar 08 2016 13:55
@andrey-helldar Это было фигурально. Индексы расставь. Намного быстрее заработает
И 70к - это вообще даже не средне. Это мало.
Andrey Helldar
@andrey-helldar
Mar 08 2016 13:55
@gaaarfild 70к это тест. По индексам понял. Походу с голодухи не сразу вник в суть ответа)
Пойду поем да еще почитаю))
Dinar Garipov
@garf
Mar 08 2016 14:04
@Dualse В других СУБД может такого не быть. Но в MySQL есть. Более того, мне кажется ОРМ сама хэндлит это по нормальному
Oscar
@OSDDQD
Mar 08 2016 15:23
Всем привет, делаю мессенджер, за аналогию взял vk, то-есть личные сообщения, так-же возможность групповых чатов, какую структуру бд предложите использовать? На данный момент остановился на следующей:
message (id, text, user_id, created_at) - храним сообщения
conversation (id) - таблица избыточна, но без неё не выходит
conversation_user (user_id) - связь пользователей с диалогом
conversation_message (conversation_id, message_id) - для связи сообщений с диалогами
Что не нравится в текущей структуре, то что она имеет место быть для групповых чатов, но для личных переписок conversation не нужны, достаточно будет добавить таблицу message_user (message_id, user_id), но тогда крайне сильно затруднит получение списка диалогов. Есть у кого идеи?
KarmaBot
@KarmaBot
Mar 08 2016 15:23
@OSDDQD, привет =)
JhaoDa
@jhaoda
Mar 08 2016 15:35
@OSDDQD какая разница, два юзера в диалоге или десять?
@OSDDQD нормальная схема БД
Oscar
@OSDDQD
Mar 08 2016 15:43
@jhaoda ну как пример, я не могу перейти по ссылке: im/user/user_id, потому что нету данного диалога
Схема относительно нормальная, но цель сделать как можно более похоже на vk, но иногда терзают сомнения и хочется всё забить и просто поставить IRC и сделать для него веб морду.
Andrey Helldar
@andrey-helldar
Mar 08 2016 15:45
@OSDDQD или заюзать Telegram. У него открытый код.
Oscar
@OSDDQD
Mar 08 2016 15:47
@andrey-helldar Q: Can I run Telegram using my own server?
Our architecture does not support federation yet. Telegram is a unified cloud service, so creating forks where two users might end up on two different Telegram clouds is unacceptable. To enable you to run your own Telegram server while retaining both speed and security is a task in itself. At the moment, we are undecided on whether or not Telegram should go in this direction.
@andrey-helldar сорцы открыты у клиента мессенджера.
Andrey Helldar
@andrey-helldar
Mar 08 2016 15:48
@OSDDQD тупанул. Уже зачитал доку, найдя исходники по клиентам.
@OSDDQD а по твоей схеме, имхо, вполне годная. У меня б также вышло.
JhaoDa
@jhaoda
Mar 08 2016 15:49
@OSDDQD почему при переходе на im/user/user_id нет диалога? У тебя должна быть запись в conversation_user, где два участника. Делай выборку по двум идентификаторам — текущий юзер и user_id из ссылки. Вроде бы просто, нет?
Хз, у меня такая схема работает и каши не просит, чатик на сокетах пашет
Oscar
@OSDDQD
Mar 08 2016 15:51
@jhaoda кстати да, логично тоже, надо постараться иногда убивать в себе перфекционизм :(
@jhaoda а как организуешь в групповых чатах сокеты? В чата 1х1 всё понятно, просто emit по socket.id, а вот в групповых? Подписываешь всех на определённый канал?
JhaoDa
@jhaoda
Mar 08 2016 15:52
@OSDDQD нет, этим сервак занимается. Каждый участник общается с сервером, а он уже пересылает сообщения остальным
Хотя у меня пока тет-а-тет чат, но какая разница, два или десять участников?
Впрочем, схема не оптимальна, если участников в чате много, но такой задачи не ставилось
Oscar
@OSDDQD
Mar 08 2016 15:55
@jhaoda большая на самом то деле, сейчас объясню на примере.
В тет-а-тет чате всё просто, потому что у каждого подключившегося пользователя есть свой socket_id на который можно слать сообщение, а вот в групповом если каждому по отдельности слать те же самые данные, то это пустое расходование ресурсов, потому я и говорю про pub/sub
JhaoDa
@jhaoda
Mar 08 2016 15:55
@OSDDQD ну я объяснил же в последнем сообщении
Oscar
@OSDDQD
Mar 08 2016 15:56

@OSDDQD ну я объяснил же

ты имеешь ввиду это?

Каждый участник общается с сервером, а он уже пересылает сообщения остальным

ну так я тоже объяснил, что у тебя получается сервер просто проходит по каждому пользователю в отдельности и шлёт сообщение, окей.

JhaoDa
@jhaoda
Mar 08 2016 15:57

@OSDDQD я имею виду

Впрочем, схема не оптимальна, если участников в чате много, но такой задачи не ставилось

Oscar
@OSDDQD
Mar 08 2016 15:58
@jhaoda а, оки.
Просто чем больше я вожусь с этой задачей, тем яснее вижу, что это пустая трата времени и надо переключаться на другой протокол пока не поздно.
JhaoDa
@jhaoda
Mar 08 2016 15:58
@OSDDQD гиттер работает на вебсокетах. Им тоже пора переключаться на другой протокол?:)
Oscar
@OSDDQD
Mar 08 2016 16:02
@jhaoda при чём тут вебсокеты? Под протоколом я подразумевал не протокол связи клиента и сервера, а протокол передачи сообщений. XMPP, IRC и подобные.
JhaoDa
@jhaoda
Mar 08 2016 16:02
@OSDDQD и какой у тебя сейчас протокол?
Sergey Protko
@fesor
Mar 08 2016 16:02
@jhaoda вебсокеты - это тупо транспорт
@jhaoda у них свой протокол поверх
JhaoDa
@jhaoda
Mar 08 2016 16:03
@fesor я где-то утверждал обратное?
Sergey Protko
@fesor
Mar 08 2016 16:03
@jhaoda ты где-то начал загонять про "им тоже надо переходить на другой протокол"
JhaoDa
@jhaoda
Mar 08 2016 16:03
@fesor ну так автор же не уточнял, какой протокол он имел ввиду?
Sergey Protko
@fesor
Mar 08 2016 16:04
@jhaoda ну так явно прикладного уровня а не транспортного
JhaoDa
@jhaoda
Mar 08 2016 16:04
А так как речь выше шла про веб-сокеты, то логично думать про них. Нет?
Sergey Protko
@fesor
Mar 08 2016 16:04
@jhaoda бритва окама и вся херня
JhaoDa
@jhaoda
Mar 08 2016 16:04
@fesor мне не явно
Oscar
@OSDDQD
Mar 08 2016 16:04
@jhaoda про вебсокеты речь шла в контексте pubsub, но не протокола.
JhaoDa
@jhaoda
Mar 08 2016 16:04
@fesor я давно уже стараюсь не додумывать за людей, что же они имели ввиду
@OSDDQD ну так какой у тебя протокол поверх WS?
Oscar
@OSDDQD
Mar 08 2016 16:07
@jhaoda не до конца понял смысл вопроса, потому что не до конца представляю себе "протокол поверх ws".
JhaoDa
@jhaoda
Mar 08 2016 16:08
@OSDDQD WAMP, например
Sergey Protko
@fesor
Mar 08 2016 16:08
@OSDDQD ты по WS гоняешь структурки разные
@OSDDQD если они чисто свои и те ны брал какие-то готовые реализации - ты изобрел свой велосипедный протокол
поздравляю
JhaoDa
@jhaoda
Mar 08 2016 16:08
@OSDDQD и тогда я не понимаю, на какой другой протокол ты собрался переключаться?
Sergey Protko
@fesor
Mar 08 2016 16:09

@OSDDQD

а вот в групповом если каждому по отдельности слать те же самые данные, то это пустое расходование ресурсов, потому я и говорю про pub/sub

увы тут никак

это не про pub/sub - это про broadcast и на ws ты такое сделать не можешь
@OSDDQD так что не выпендривайся а просто шли группе людей одно и то же сообщение
@OSDDQD отправлять один пакет всем ты можешь только по UDP, а UDP вроде как можно только через webrtc юзать
и то я не на 100% уверен
JhaoDa
@jhaoda
Mar 08 2016 16:11
Не, ну почему, в ларавель есть броадкастинг. Но он хочет редиску. И работает поверх веб-сокетов
Oscar
@OSDDQD
Mar 08 2016 16:12
@fesor ну в том же socket.io есть комнаты, вот и выход из ситуации, вместо рассылки каждому пользователю в отдельности
Sergey Protko
@fesor
Mar 08 2016 16:12
@jhaoda ну так он работает по такому же алгоритму - берет массив сокетов и шлет каждому одно и то же
JhaoDa
@jhaoda
Mar 08 2016 16:12
@fesor ну псевдоброадкастинг
Sergey Protko
@fesor
Mar 08 2016 16:12
@jhaoda то есть настоящие бродкасты, которые не расходую ресурсы машины напрасно, можно сделать только на UDP
@jhaoda именно по этому одно время сильно хотели торенты на UDP перевети (utp протокол назывался) и реалтайм стриминги на нем работают
@OSDDQD так в чем проблема?
@OSDDQD и причем тут pub/sub?
Oscar
@OSDDQD
Mar 08 2016 16:13
@jhaoda а, как я понял, румы в socket.io работают так же, просто каждому участнику комнаты отсылает сообщение, тогда да, псевдо броадкаст
@OSDDQD и причем тут pub/sub?
При входе пользователя в групповой чат, добавляем его в комнату и в итоге как мне казалось аналогия с pub/sub
JhaoDa
@jhaoda
Mar 08 2016 16:15
@fesor я всё понимаю, но зачем вести речь про UDP в рамках веба?
Давайте ещё виндоокнонную подписку на события обсудим, сравним с тем, что в ларавель и в Qt
Sergey Protko
@fesor
Mar 08 2016 16:28
@OSDDQD комната - тупо коллекция сокетов.
@jhaoda UDP - webrtc)
JhaoDa
@jhaoda
Mar 08 2016 16:29
@fesor здесь люди РНР не знают, какой webrtc...
JhaoDa
@jhaoda
Mar 08 2016 16:37
@fesor опять же, как я понимаю, нормальная работа в webrtc требует промежуточных серверов
Sergey Protko
@fesor
Mar 08 2016 16:38
@jhaoda ну да, нам же нужно как-то людей сконнектить друг с дружкой
а дальше уже p2p
JhaoDa
@jhaoda
Mar 08 2016 16:38
@fesor а раз это р2р, то какой тут броадкаст?
Vlad
@brainraider
Mar 08 2016 16:39

Привет всем.
Подскажите, пожалуйста, как реализовать ограничение на кол-во попыток авторизоваться в laravel 4?

Необходимо отсчитывать кол-во неудачных авторизаций пользователя. И, допустим, после 3й попытки блокировать на полчаса по IP.

Может есть уже готовые решения?

Заранее благодарен.

KarmaBot
@KarmaBot
Mar 08 2016 16:39
@brainraider, привет =)
JhaoDa
@jhaoda
Mar 08 2016 16:39
@brainraider аутентифицироваться, а не авторизоваться
@brainraider можно посмотреть, как это реализовано в пятерке и сделать так же.
Sergey Protko
@fesor
Mar 08 2016 16:42
@jhaoda в рамках webrtc есть еще возможность пайпы создавать между эндпоинтами, в том числе помимо tcp есть вроде возможность коннектиться по udp например с серваком. А если так - можно в теории замутить бродкаст...
@jhaoda но только это не нужно никому)
NickPanda
@NickPanda
Mar 08 2016 16:43

Всем привет. Возникло несколько вопросов, один уже решил

Вообщем, по каким критериям (плагины типа Wappalyzer ) определяют, что используетсся laravel? а config/session нашел что можно изменить имя печеньки, но это не дало прроку_

И да как сделать, чтобы в лично м кабинете при смене пароля сбрасывалсь аторизация со всех других устройств?
И да реализован ли данный механизм при сбросе пароля password reset

_
И да насчет кросс доменной Аутентификации, я правильно понял, что надо в session прописать .domain и дело в шляпе?
Хотя интересный момент реально ли такое сделать, например для 2 разных доменв, а не только суб

KarmaBot
@KarmaBot
Mar 08 2016 16:43
@NickPanda, привет =)
Vlad
@brainraider
Mar 08 2016 16:43
@jhaoda Как это реализовать понятно. Я думал, может есть что-то готовое.
JhaoDa
@jhaoda
Mar 08 2016 16:43
@brainraider погуглить по словам «laravel 4 login throttle» пробовал?
NickPanda
@NickPanda
Mar 08 2016 16:45
@jhaoda самое обидное по такому запросу выкидывает в основном laravel 5.1.4
JhaoDa
@jhaoda
Mar 08 2016 16:45
@NickPanda
  1. Аутентификация, а не авторизация
  2. Спроси у авторов плагинов
  3. Аутентификация в ларавель не привязана к устройствам (хотя в 5.2.22 появилось что-то похожее в таблице сессий)
  4. См. п. 3
  5. Нет (а может и да, вопрос до конца непонятен)
Vlad
@brainraider
Mar 08 2016 16:45
@jhaoda погуглить - дело хорошее. Но, я думал тут есть люди, которые пробовали что-нибудь уже. В общем, ясно, комьюнити вновь бессильно ))
JhaoDa
@jhaoda
Mar 08 2016 16:46
@brainraider ты можешь подождать пару часов, вдруг ответят. Или найти решение самостоятельно минут за 20.
NickPanda
@NickPanda
Mar 08 2016 16:48

5) это как я понимаю про суб домены, ну как я понял если в session.php (config) в параметре домен прописать, .domain ? то это будет распростроняться на все суб домены и на основной домен

Вот тут хотел понять прав ли я, и можно ли сделать на 2 разных домена

3-4) то есть если зайти с 1 устройства, и сменить пароль на 2 то я могу пакостить с первого?
вывод как возможно сделать привязку?
JhaoDa
@jhaoda
Mar 08 2016 16:50
@NickPanda см. поправку в п. 3
Там теперь может писаться ip и юзер агент
Но ремембер-токен, например, всё равно один, так что зайти на трех устройствах и поставить везде галочки «Запомнить меня» нельзя до сих пор
NickPanda
@NickPanda
Mar 08 2016 16:56
то есть зайдя на 1 устройстве, он запомнит пока не зайду с галочкой на втором?
Oscar
@OSDDQD
Mar 08 2016 17:10
@NickPanda ага, ну или пока время жизни сессии не истечёт.
Юрий
@sawerus
Mar 08 2016 17:17
@NickPanda у тебя сессии в базе ? если да там же есть id юзера. если с разных устройств то будет несколько таких же id. При смене пароля совой оставь остальные три.
NickPanda
@NickPanda
Mar 08 2016 17:55

@sawerus создал я сессию на базе, но там даже без авторизации запись делается, плюс шифрованный id и вдобавок разный.... то есть не понятно

вначале я думал, при смене пароля удалять все свои записи (со своим шв) и авторизовывать по новой

(laravel 5.1)

Юрий
@sawerus
Mar 08 2016 17:57
@NickPanda если юзер не в админке то в таблице сессий user_id = null
в 5.2 по крайней мере. За 5.1 не скажу.
JhaoDa
@jhaoda
Mar 08 2016 18:02
@NickPanda короче, нету в ларавель нормальной поддержки нескольких сессий с разных устройств
Юрий
@sawerus
Mar 08 2016 18:03
@jhaoda про 5.1 или вообще ?
Юрий
@sawerus
Mar 08 2016 18:06
@jhaoda дак и я про что.
JhaoDa
@jhaoda
Mar 08 2016 18:07
Как я писал выше, сессии-то хранятся нормально, и, например, в личном кабинете можно показать юзеру все его сессии
Но вот залогиниться с нескольких устройств нормально нельзя, аутентификация будет жить, пока жива сессия
Юрий
@sawerus
Mar 08 2016 18:08
так и есть
JhaoDa
@jhaoda
Mar 08 2016 18:09
Но смысла показывать эти сессии нет, потому что они «короткие»
Пока ремембер ми не заработает для любого количества устройств, всё это так, фигня
@sawerus вывод — нету в ларавель нормальной поддержки нескольких сессий с разных устройств
Юрий
@sawerus
Mar 08 2016 18:10
@jhaoda что есть короткая сессия? в конфиге можно настроить
@jhaoda 'lifetime' => 120,
JhaoDa
@jhaoda
Mar 08 2016 18:11
@sawerus без ремембер ми токена это фигня
Юрий
@sawerus
Mar 08 2016 18:11
а аутентификацию проверять по отсутствию деятельности юзера на сайте через поле last_activity в базе сессии
JhaoDa
@jhaoda
Mar 08 2016 18:12
@sawerus сессию убивает сборщик мусора, при чем тут активность?
Сессия умерла — вводи логин/пароль опять
@sawerus ты знаешь, что за функция «Запомнить меня» и как она работает?
Юрий
@sawerus
Mar 08 2016 18:14
@jhaoda влом перечитывать было все сообщения. Каюсь. я прицепился к тому что автор про смену пароля писал и про разные устройства.
@jhaoda про "Запомнить меня" не вникал, мне за ненадобностью пока что.Ну думаю надо ознакомиться, на досуге.
Vasiliy Romanov
@RootKeet
Mar 08 2016 18:17
Всем привет! Такой вопрос как мне сделать глобальную переменную для шаблона чтобы не передавать ее в каждом return view? Возьмем к примеру аватар для страницы, есть ссылка, сам аватар инклудится во все страницы
KarmaBot
@KarmaBot
Mar 08 2016 18:17
@RootKeet, и тебе привет ;)
JhaoDa
@jhaoda
Mar 08 2016 18:18
@RootKeet ты всё еще не прочитал доку, да?
Ибо тогда бы ты знал про шаринг переменных во вьюхи
Vasiliy Romanov
@RootKeet
Mar 08 2016 18:19
@jhaoda читаю по тихоньку
JhaoDa
@jhaoda
Mar 08 2016 18:19
@RootKeet это же не бухать, можно и ускориться :)
Юрий
@sawerus
Mar 08 2016 18:20
@RootKeet VIEWS - основы использования.
Vasiliy Romanov
@RootKeet
Mar 08 2016 18:21
@sawerus @jhaoda cgc
спс
KarmaBot
@KarmaBot
Mar 08 2016 18:21
@RootKeet, в этом чате принято добавлять имя пользователя, чтобы его поблагодарить.
Vasiliy Romanov
@RootKeet
Mar 08 2016 18:21
@sawerus @jhaoda спс
KarmaBot
@KarmaBot
Mar 08 2016 18:21
Спасибо (+1) для @sawerus принято! Текущая карма +23.
Спасибо (+1) для @jhaoda принято! Текущая карма +694.
Maxim Morozov
@m-a-x-i-m
Mar 08 2016 18:22
Ребят, вопрос: артизан при создании миграций в которых присутствует внешний ключ, сам определяет порядок создания таблиц? К примеру у меня связь многие ко многим, артизан создаст сначала первые две таблицы, а на последок третью связующую?
JhaoDa
@jhaoda
Mar 08 2016 18:22
@M-a-x-i-m нет, он тупенький
Maxim Morozov
@m-a-x-i-m
Mar 08 2016 18:23
@jhaoda печалько, спс
KarmaBot
@KarmaBot
Mar 08 2016 18:23
Спасибо (+1) для @jhaoda принято! Текущая карма +695.
Юрий
@sawerus
Mar 08 2016 18:23
This message was deleted
Kirill Nesmeyanov
@SerafimArts
Mar 08 2016 18:24
@jhaoda напиши что-нибудь плиз
JhaoDa
@jhaoda
Mar 08 2016 18:24
@SerafimArts пишу
Kirill Nesmeyanov
@SerafimArts
Mar 08 2016 18:24
@jhaoda спс
KarmaBot
@KarmaBot
Mar 08 2016 18:24
Спасибо (+1) для @jhaoda принято! Текущая карма +696.
Kirill Nesmeyanov
@SerafimArts
Mar 08 2016 18:25
ну я так, что бы как все
Юрий
@sawerus
Mar 08 2016 18:25
This message was deleted
JhaoDa
@jhaoda
Mar 08 2016 18:26
@SerafimArts а вот может бы подскажешь, как свой обработчик ошибок в ларавель внедрить?
Фикус в том, что пакет должен ловить исключения и преобразовывать их в хитрый json
Подменять синглтон в контейнере?
С другой стороны, у респонса есть поле exception, а может ли видеть его after-мидлваря...
JhaoDa
@jhaoda
Mar 08 2016 18:39
Ага, видит... но мне не нравится, что сначала базовый хэндлер отренедерит ошибку, потом мидлваря поймает ответ и отрендерит уже как надо
С другой стороны, это же ошибка, фиг бы с ним
Kirill Nesmeyanov
@SerafimArts
Mar 08 2016 19:24
@jhaoda неееее
там всё хитрее
просто оберни миддлварю в трайкетч
точнее $next этой миддлвари
а дальше уже преобразуй
=)
Юрий
@sawerus
Mar 08 2016 19:25
https://github.com/cviebrock/eloquent-sluggable
использовали?
все ровно? или что другое есть...
JhaoDa
@jhaoda
Mar 08 2016 19:25
@sawerus а зачем? Нескромный вопрос, да
Юрий
@sawerus
Mar 08 2016 19:27
@jhaoda есть вероятность что будет много постов с одинаковыми названиями. Надо транслит делать. при одинаоквых транслит-1, транслит-2 и т.д.
JhaoDa
@jhaoda
Mar 08 2016 19:27
@sawerus я к тому, что такие вещи не надо ставить как пакет
Kirill Nesmeyanov
@SerafimArts
Mar 08 2016 19:27
@sawerus Str::slug(...); тебе в помощь
или как там её
JhaoDa
@jhaoda
Mar 08 2016 19:27
Всё равно окажется, что этот пакет то одно делает не так, то другое
@SerafimArts str_slug
Юрий
@sawerus
Mar 08 2016 19:28
@SerafimArts я вкурсе ну в ссылке на лету все вроде как )
@SerafimArts само проверяет и само подставляет 1,2,3 ....
JhaoDa
@jhaoda
Mar 08 2016 19:31
@sawerus по уму это механизм должен быть в каком-то сервисе
Зачем такую кучу кода пихать в модель даже через трейт?
Юрий
@sawerus
Mar 08 2016 19:32
согласен
Maxim Morozov
@m-a-x-i-m
Mar 08 2016 21:02

Народ, не подскажите, как из одной модели получить данные с трех связанных между собой моделей?

Модели:
Проект -> (многие ко многим) инструменты проекта -> (многие к одному) категория инструмента.

Нужно получить сам проект + всего его инструменты сгрупированные по категориям.

Инструменты проекта знаю как получить, через belongsToMany(), а вот как сделать чтобы они были сгрупированны по категориям? После получения инструментов, обходить каждый интрумент и получать для него категорию, и вручную группировать?

Как всё это реализовать при помощи ORM?
Maxim Morozov
@m-a-x-i-m
Mar 08 2016 21:10
Или как вариант, собрать со всех полученных инструментов, ID категорий, затем выбрать все эти категории одним запросом, и потом раскидать инструменты по категориям
Maxim Morozov
@m-a-x-i-m
Mar 08 2016 21:16
Использую второй вариант
D3-FC
@D3-FC
Mar 08 2016 21:55
Привет всем.
KarmaBot
@KarmaBot
Mar 08 2016 21:55
@D3-FC, привет, как настроение?
D3-FC
@D3-FC
Mar 08 2016 21:55
Подскажите как проверить в валидаторе не пустой ли массив?