These are chat archives for LaravelRUS/chat

26th
Nov 2016
Alexander
@bobrovskikh
Nov 26 2016 05:11
@Nuzsk Да почему он злой? Документация - открыта и бесплатна. Ты сам попробуй потратить свое время, деньги, много времени, создай что-то действительно качественное и раздай это бесплатно людям
Alexander
@bobrovskikh
Nov 26 2016 06:41
Парни, а как поступить с загрузкой галлереи картинок к статье, гружу их ajax'ом, но привязать к статье не могу, пока не сохраню саму статью, но сами фото уже загружены во время создания статьи, и получается если сохраняется статья, то все хорошо, а если нет, то фото повисают мертвым грузом. Как лучше поступать? Создавать временные таблицы и туда писать или есть более правильные методы?
Alexander
@Dualse
Nov 26 2016 06:42
@bobrovskikh Клади их во временный каталог
Sergey Gladkovskiy
@smgladkovskiy
Nov 26 2016 06:42
Темпы, которые чистишь по регламенту - как вариант. Связывать по сессии или ещё какой-то сущностью и после создания статьи - связывать со статьёй.
Dave
@aios
Nov 26 2016 06:49
@bobrovskikh чувак
для тебя давным давно Observers придумали
евент saved
mavsan
@mavsan
Nov 26 2016 07:22
Добрый день! Проблема есть, и не нашел ни где решения :worried: при тестировании с использованием MySql все нормально тестируется, но при попытке тестировать используя sqlite :memory: не создается поле deleted_at (для трейта SoftDeletes) и при вставке значений в БД так-же выдается ошибка:
KarmaBot
@KarmaBot
Nov 26 2016 07:22
О! @mavsan! Сто лет не виделись!) Как жизнь молодецкая? Рассказывай :)
mavsan
@mavsan
Nov 26 2016 07:22
SQLSTATE[HY000]: General error: 20 datatype mismatch (SQL: insert into "users" ("username", "name", "email", "password", "id", "updated_at", "created_at") values (admin, admin, admin@admin.com, $2y$10$OFVM9W7YT/o2/ytBAU2o3.H8xZefcot8LYQSX/yFxBTMAVmeblPn., a8d6d32b-2d9d-4581-8bab-672d89ac40ff, 2016-11-26 07:16:12, 2016-11-26 07:16:12))
JhaoDa
@jhaoda
Nov 26 2016 07:34
@mavsan а ты это поле в миграцию добавил?
mavsan
@mavsan
Nov 26 2016 07:35
да конечно, в mysql все отлично, но долго, поэтому и хотел sqlite :memory: использовать
JhaoDa
@jhaoda
Nov 26 2016 07:36
Странно, у меня никаких проблем, и даже не слышал о таком
mavsan
@mavsan
Nov 26 2016 07:37
В качестве сервера lampp? У меня OpenServer, я на него грешу
JhaoDa
@jhaoda
Nov 26 2016 07:37
@mavsan а при чем тут сервер?
mavsan
@mavsan
Nov 26 2016 07:38
Не знаю, второй день бьюсь, как вариант.
Murad
@Muradg
Nov 26 2016 10:52
Всем привет. Объясните пожалуйста, как cy-pr определяет что у меня на сайте используется фреймворк laravel ?
KarmaBot
@KarmaBot
Nov 26 2016 10:52
Прувет, @Muradg!
Murad
@Muradg
Nov 26 2016 10:52
Например всякие вордпрессы можно понять по ссылкам типа wp-content, а фреймворк как они определяют ?
Kirill Nesmeyanov
@SerafimArts
Nov 26 2016 10:54
@Muradg по имени кукиса для сессии
Murad
@Muradg
Nov 26 2016 10:54
@SerafimArts все понял, благодарю ;)
KarmaBot
@KarmaBot
Nov 26 2016 10:54
Спасибо (+1) для @SerafimArts принято! Текущая карма +634.
Alexey Abrosimov
@amberlex78
Nov 26 2016 10:57
привет всем
KarmaBot
@KarmaBot
Nov 26 2016 10:57
Привет, @amberlex78! Проходи, присаживайся. В ногах правды нет :)
Alexey Abrosimov
@amberlex78
Nov 26 2016 10:59
может кто подсказать по авторизации в ларавел
?
В ларавеле стандартная auth
Auth::routes(); c Controllers\Auth и своими views
Нужно для backend и frontend разделить
Например, все пути касающиеся авторизации для backend начинались /admin
Для логина /admin/login и аналогично остальные
Т.е. там будут и свои views
А для frontend тоже свои views
Для логина /login и аналогично остальные (как и сейчас в принципе)
Alexey Abrosimov
@amberlex78
Nov 26 2016 11:04
Все контроллеры для админки в Route::group с 'namespace' => 'Backend'
только вот Auth::routes(); - получается один на все
Выходит все контроллеры Auth нужно поместить в Backend c namespace App\Http\Controllers\Backend\Auth;
Alexey Abrosimov
@amberlex78
Nov 26 2016 11:11
В общем чтоб для входа в админ-часть были свои views касающиеся авторизации
Сейчас они общие и контроллеры общие и middleware
projct1
@projct1
Nov 26 2016 11:44
подскажите а можно ли как-нибудь рендерить блейд и передавать контент секций примерно так:
view('default')->withSection('sectionName', 'Контент для секции с названием sectionName в шаблоне default')
печально что при передаче в шаблон ->with('content', 'asdfasgfasg') на реплейсится @yield('content')
argab
@argab
Nov 26 2016 11:51
Тут кто-нибудь пользуется битриксом?
KarmaBot
@KarmaBot
Nov 26 2016 11:51
@argab, :see_no_evil: :fire:
projct1
@projct1
Nov 26 2016 11:52
@argab изыди)))
argab
@argab
Nov 26 2016 11:53
Просят на нем написать
projct1
@projct1
Nov 26 2016 11:54
@argab соболезную)
argab
@argab
Nov 26 2016 11:55
А че так
Вроде послед версия не плохая
Kirill Nesmeyanov
@SerafimArts
Nov 26 2016 12:34
...
Nuzsk
@Nuzsk
Nov 26 2016 12:40

Вроде послед версия не плохая

плохая, они все плохие, 2016 год, а туда еще ORM не завезли

Alexey Abrosimov
@amberlex78
Nov 26 2016 13:14
завезли, только кривую)
Alexander
@Dualse
Nov 26 2016 15:39
@argab У нас оффтопка есть: https://gitter.im/LaravelRUS/offtop Лучше туда с такими вопросами.
Дмитрий Мязин
@d4c0
Nov 26 2016 16:22

Ребята, 2 вопроса:

  1. Возможно ли удалить множество записей в контексте одного запроса к базе данных, используя eloquent? (нашел метод destroy, но в итоге это тот же $model->delete() в foreach().

  2. Существует ли способ вставить сразу всю коллекцию моделей (за 1 запрос), кроме как: Model::insert($collection->toArray());

Роман Сохарев
@greabock
Nov 26 2016 16:30

@d4c0

MyModel::whereIn('id', [1, 2, 3])->delete();

Следует однако понимать, что события deleting, и deleted вызваны в этом случае не будут. Тоже самое касается как вставки, так массового апдейта.

Дмитрий Мязин
@d4c0
Nov 26 2016 16:31
@greabock спасибо!
KarmaBot
@KarmaBot
Nov 26 2016 16:31
Спасибо (+1) для @greabock принято! Текущая карма +467.
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 16:45

Народ, всем привет! Подскажите, каким образом, при реализации сервиса и приложения, взаимодействующего с сервисом через API, ограничивают доступ к API?

Под приложением подразумеваю SPA/Mobile App.
Под сервисом понимаю, соотвественно, сервис который по HTTP/HTTPS принимает запрос и возвращает ответ.

KarmaBot
@KarmaBot
Nov 26 2016 16:45
@Furdarius, здравствуй.
Дмитрий Мязин
@d4c0
Nov 26 2016 16:47
@Furdarius ты имеешь в виду защиту от ddos, или, например ограниченное кол-во запросов к API в день? Или полное ограничение запросов для конкретного приложения?
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 16:50
@d4c0 Я не об этой защите.
На примере: Есть SPA которое взаимодействует с моим API.
Левый чел берет, пишет своё SPA, которое так-же взаимодействует с моим API.
Соответсвенно, необходимо сделать так, что бы доступ к моему API был только у моего SPA.
Роман Сохарев
@greabock
Nov 26 2016 16:51
@Furdarius очевидно, что ничего лучше apikey тут не придумаешь
Nuzsk
@Nuzsk
Nov 26 2016 16:51
@Furdarius CORS
Дмитрий Мязин
@d4c0
Nov 26 2016 16:51
@Furdarius передавай secret-key, а на бэкенде сделай миддлварь, и проверяй.
Роман Сохарев
@greabock
Nov 26 2016 16:51
@Nuzsk CORS это для браузеров
Nuzsk
@Nuzsk
Nov 26 2016 16:51
пользовательские браузеры не станут коннектиться к чужому api с неразрешенного домена
@greabock SPA это про браузеры
разве что прокси сделают, но его в отличии от пользователя легко прибанить )
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 16:52
@greabock Вопрос в том, что apikey будет на клиенте лежать => может быть прихватизирован.
Роман Сохарев
@greabock
Nov 26 2016 16:52
@Nuzsk и что же помешает мне, написать всое приложние не для браузера и подмешать валидный ориджин?
Nuzsk
@Nuzsk
Nov 26 2016 16:53
@greabock то что браузеры запрещают менять Origin
Роман Сохарев
@greabock
Nov 26 2016 16:53
@Nuzsk читай внимательно
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 16:53
@Nuzsk API и приложения могут быть на разных доменах же.
Nuzsk
@Nuzsk
Nov 26 2016 16:53
@greabock там про SPA
@Furdarius прописываешь один разрешенный домен, с чужих Origin не зайдет
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 16:54
Я и про SPA и про Mobile App... Они ведь с одним api, в идеале, работают.
Роман Сохарев
@greabock
Nov 26 2016 16:54
@Nuzsk а что, святые барабаны, помешает мне написать НАТИВНОЕ ПРИЛОЖЕНИЕ, и общаться с его апи?
Nuzsk
@Nuzsk
Nov 26 2016 16:55
@greabock тем, что в таком случае на всех пользователей будет один ip (твоего прокси приложения)
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 16:57
@Nuzsk API и SPA могут быть на разных доменах (повторяюсь)
Nuzsk
@Nuzsk
Nov 26 2016 16:57
@Furdarius ты знаешь как работает CORS?
ты разрешаешь кросбраузерный доступ для одного домена, где лежит твой фронт
Роман Сохарев
@greabock
Nov 26 2016 16:58

@Nuzsk

  1. тем чем? Ты вообще со мной разговариваешь? Я нигде не написал "чем".
  2. какой нафиг прокси? обычная приложуха не важно на чем, хоть на мобилу хоть на десктоп, шлет обычные http запросы.

Ты там не выпил случаем? Корс тут не поможет. CORS это вообще о браузерной безопасноти.

Это браузеры запрещают подменять ориджин. Ни что не мешает мне выставить такой ориджин, какой мне хочется, если я шлю запрос курлом каким ни будь банально.
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 17:00
@Nuzsk Фронт может лежать на одном домене. Service может быть доступен на другом домене.
Nuzsk
@Nuzsk
Nov 26 2016 17:00

@greabock речь шла о SPA, внезапно перескочили на мобильные приложения, а теперь ты придумал десктоп

если ты хочешь универсального решения - его нет, можешь в качестве примера посмотреть на mmo игры и их попытки ограничить коннекты с левых клиентов

@Furdarius именно для этого CORS и нужен, прочитай уже что это такое
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 17:01
This message was deleted
@Nuzsk Ну то-есть у SPA доступ по домену. Хорошо. А mobile app?
Nuzsk
@Nuzsk
Nov 26 2016 17:03
@Furdarius из mobile так или иначе вытащат все ключи, даже если ты там все обфусцируешь, не особо получится защититься
разве что делать персональные токены для пользователей, с какой-то оплатой за доступ или привязкой к номеру
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 17:04
Концепция понятна. @Nuzsk @greabock спасибо
KarmaBot
@KarmaBot
Nov 26 2016 17:04
Спасибо (+1) для @Nuzsk принято! Текущая карма +165.
Спасибо (+1) для @greabock принято! Текущая карма +468.
Dave
@aios
Nov 26 2016 17:15
@Furdarius я юзал фингерпринт
есть форки под разные языки
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 17:33
@aios Привет) А что это?
Dave
@aios
Nov 26 2016 17:40
@Furdarius знаешь же что такое touch id?
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 17:40
@aios И снова нет)
Dave
@aios
Nov 26 2016 17:40
@Furdarius епт..
@Furdarius тач айди это авторизация устройства по отпечатку пальца
так вот...
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 17:41
@aios А ну блин, это то понятно)
Nuzsk
@Nuzsk
Nov 26 2016 17:41
а как поможет идентификация каждого пользователя (по железу и софту) сберечь api от постороннего использования в других приложениях?
Dave
@aios
Nov 26 2016 17:41
fingerPrint это "отпечаток пальца" браузера
@Furdarius в некоторых случаях даже вкладки
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 17:42
@aios Да, это я тоже понял) Просто думал ты не об этом говоришь, а о каком-то способе подписать апликуху)
Dave
@aios
Nov 26 2016 17:42
@Nuzsk для закрытых проектов - поможет
@Nuzsk для открытых увы.
Nuzsk
@Nuzsk
Nov 26 2016 17:42
@aios в закрытых можно и токены на почту рассылать )
Dave
@aios
Nov 26 2016 17:43
ну а контроль?
как контроллить будешь - что бы юзер только в одной вкладке сидел?
Nuzsk
@Nuzsk
Nov 26 2016 17:43
это отдельный вопрос, тут вероятно эта штука принесет пользу
Dave
@aios
Nov 26 2016 17:43
@Nuzsk ну так мы о ней и говорим) подмешиваем соль - крепим к юзеру. точка.
@Nuzsk изменился фингерпринт
дасвидос
Nuzsk
@Nuzsk
Nov 26 2016 17:44
а вообще эти блокировки обходятся не слишком сложно, даже хардварные
а в браузере и подавно
Dave
@aios
Nov 26 2016 17:44
@Nuzsk ошибаешься)
это что то типо 2 факторной авторизации
много случаев видел ее взлома?
Nuzsk
@Nuzsk
Nov 26 2016 17:44
@aios сам обходил баны по железкам много раз
так же запускал несколько копий приложения
Dave
@aios
Nov 26 2016 17:45
@Nuzsk дело не в железке.
мы ведь не ее считываем.
Nuzsk
@Nuzsk
Nov 26 2016 17:45
и это десктоп, там намного больше возможностей взять idшники железа и прочую информацию
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 17:45
Подождите, вопрос то не об этом был)
Dave
@aios
Nov 26 2016 17:46
@Furdarius всм? тебе нужно что бы апи пользовался только один клиент апи. то есть твой SPA
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 17:46
Не понятно тогда, как тот-же parse тогда работал... Они же заместо backend были, по-сути.
Dave
@aios
Nov 26 2016 17:46
@Furdarius ну так и суй туда фингер принт
@Furdarius задача достаточно простая - создать некую область ключей которые не меняются динамически - но меняются если изменить состояние работы внутри spa - то бишь IP - уровень машины Cookie, IndexDB storage + UA для браузера, SessionStorage для вкладки. Все что можешь собрать что угодно.
И создаешь хеш
если этот клиент поменял хеш - то бишь запустил другой клиент - запустил другое взаимодействие другое что угодно.
меняется фингер принт
и все тю тю
он ничего не получит.
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 17:49
@aios SPA на клиенте, значит все APIKEY и т.д. пользователь знает.
Dave
@aios
Nov 26 2016 17:49
@Furdarius не знает.
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 17:49
@aios ??
Dave
@aios
Nov 26 2016 17:49
он знает фингер принт хеш который отправляется с каждым запросом
только вставит в другой клиент браузер или что там у него
балобас он получит
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 17:50
А как ты определишь браузер?
Dave
@aios
Nov 26 2016 17:50
потому что фингер принт должен генерится на каждом устройстве браузере вкладке свой.
а то бишь JS это не умеет да?)
Nuzsk
@Nuzsk
Nov 26 2016 17:50
js можно модифицировать на лету
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 17:51
@aios JS выполняется на клиенте => да, клиент может подменить всё
Dave
@aios
Nov 26 2016 17:51
@Nuzsk ну отмодифицируй с моей солью так что бы ты получил нужный фингер принт старого устройства браузера или че там новое будет
@Furdarius Он может подменить JS но не может подменить браузера.
@Nuzsk принципиально-теоретическая - я бы поправил.
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 17:52
@aios Хм, ну вообще, да...
Dave
@aios
Nov 26 2016 17:52
@Furdarius короче работает на 2 проектах) вроде довольны.
@Furdarius и кто бы не рыпался - первое с чем они сталкиваются - это fingerPrint
они не могут получить ее из соли сервера
ведь только сервер знает старый фингер
Nuzsk
@Nuzsk
Nov 26 2016 17:53
@aios а что мешает отправлять каждый раз старый?
Dave
@aios
Nov 26 2016 17:53
то бишь тот с которого все окей.
@Nuzsk то то и оно. нельзя.
он генерится каждый раз
а не сохраняется на устройстве
генерится и каждый раз один и тот же
сверяется на сервере с тем что есть
Nuzsk
@Nuzsk
Nov 26 2016 17:53
сгенерился -> запомнили -> используем на новом окне
Dave
@aios
Nov 26 2016 17:54
@Nuzsk в новом окне новые данные
SessionStorageID - новый объект window
а не такой же.
Nuzsk
@Nuzsk
Nov 26 2016 17:54
@aios а тебе подсунут старые в fingerptint
Dave
@aios
Nov 26 2016 17:54
и тд.
@Nuzsk не подсунут
Nuzsk
@Nuzsk
Nov 26 2016 17:54
поставят в распорку проксик и поменяют трафик на лету
Dave
@aios
Nov 26 2016 17:54
каждая вкладка каждый запущенный браузер уникален.
Nuzsk
@Nuzsk
Nov 26 2016 17:54
сложно чтоли
или вовсе пропатчат js
Dave
@aios
Nov 26 2016 17:54
ну и ничего не получат
старый фингер знаю только я и мой сервер
Nuzsk
@Nuzsk
Nov 26 2016 17:55
в общем как-то несекъюрно выглядит, но верю что помогает, пользователи ленивые )
Dave
@aios
Nov 26 2016 17:55
ну это был единственный способ
можно конечно сделать банально просто
захешить тупо обьект window и отдельные его части
но тогда не динамично
то есть реализация решает только одну проблему
вкладка
а я хочу браузер
cleargoal
@cleargoal
Nov 26 2016 17:56
привет, мастера!
поможете новичку?
Dave
@aios
Nov 26 2016 17:56
то бишь хочу что бы во всех вкладках с браузера работало
KarmaBot
@KarmaBot
Nov 26 2016 17:56
Не узнал тебя, @cleargoal. Богатым будешь :)
Dave
@aios
Nov 26 2016 17:57
@cleargoal никогда не начинай диалог с этого
Nuzsk
@Nuzsk
Nov 26 2016 17:57
@cleargoal спасибо что пришел
KarmaBot
@KarmaBot
Nov 26 2016 17:57
Спасибо (+1) для @cleargoal принято! Текущая карма +1.
Dave
@aios
Nov 26 2016 17:57
если хочешь получить какую то помощь.
cleargoal
@cleargoal
Nov 26 2016 17:57
@aios а как начать?
Dave
@aios
Nov 26 2016 17:57
@cleargoal Привет ребят у меня так то так - происходит так то так - ожидаю что будет происходить так - что почитать или почему так происходит.
Nuzsk
@Nuzsk
Nov 26 2016 17:58
@cleargoal и никогда не признавайся, что ты взял заказ который горит, но не читал документацию :smile:
делай вид что учишься
butschster
@butschster
Nov 26 2016 17:59
@cleargoal https://www.youtube.com/watch?v=304inU71Mso
Dave
@aios
Nov 26 2016 17:59
@cleargoal о ну это ваще труба - тут тогда тебя пошлют на доки.
@butschster я видел))) прикольный)
@butschster прими редирект епта)
Artur Gafurov
@assurrussa
Nov 26 2016 18:00
@butschster теперь всем советуешь?))) это видео наверно надо в правила чата залить
Dave
@aios
Nov 26 2016 18:00
@assurrussa личку прочти
butschster
@butschster
Nov 26 2016 18:00
@assurrussa оно единственное адекватное
и его нужно смотреть, а не читать кучу текста :)
cleargoal
@cleargoal
Nov 26 2016 18:01
я только начал учить Ларавель, иду по туториалу;
создал модель Task и вьюшку tasks;
вызываю эту вьюшку в браузере, а пхп пишет, что ее (вьюшки) нет.
Что я не доделал?
Artur Gafurov
@assurrussa
Nov 26 2016 18:01
@butschster смотрел, прикольно)
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 18:02

@aios Всё-равно, не очень понимаю, каким образом предлагаешь валидировать SPA этим принтом...
По сути, когда на сервер приходит что-то по HTTP, то единственное, в чем мы можем быть уверены, это IP. Или есть больше данных в которых можно быть увереным, когда запрос по HTTP пришел.

P.S. Под HTTP имею ввиду и HTTPS тоже.

butschster
@butschster
Nov 26 2016 18:02
@cleargoal вот смотри, я добавил в контроллер вьюху и у меня все работает, я все сделал правильно!
Dave
@aios
Nov 26 2016 18:03
@Furdarius серверу не обязательно знать о данных
они коллектируются на стороне клиенте
cleargoal
@cleargoal
Nov 26 2016 18:03
@butschster я понял - не дошел еще до контролера, его просто нет :(
Спасибо!
учусь дальше.
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 18:03
@aios Но ведь в этом случае, клиент может любые данные отправить)
butschster
@butschster
Nov 26 2016 18:04
@cleargoal я тебе немного про другое. Ты же понимаешь, что пока ты не расскажегшь подробно, а не поверхностно советы тебе никто не даст и посмотри видео
Dave
@aios
Nov 26 2016 18:04
@Furdarius может - но старый фингер на сервере уже есть
если нет значит запросы с этого клиента еще не были отправлены
и мы авторизируем его как ни в чем не бывало
cleargoal
@cleargoal
Nov 26 2016 18:05
@butschster видео сейчас посмотрю;
а рассказывать подробно мне про Ларавель пока трудно - слов нет :)
как заика пока что...
butschster
@butschster
Nov 26 2016 18:05
@cleargoal здесь нет гадалок...
cleargoal
@cleargoal
Nov 26 2016 18:06
@butschster и это очень хорошо! Я пошел смотреть видео.
Вернусь с нормальными вопросами.
Спасибо!
KarmaBot
@KarmaBot
Nov 26 2016 18:06
Спасибо (+1) для @butschster принято! Текущая карма +274.
Dave
@aios
Nov 26 2016 18:08
@Furdarius фишка в том что мы прокладываем этим фингером тунель
Nuzsk
@Nuzsk
Nov 26 2016 18:12

@Furdarius на самом деле можно, если представить клиента и сервера как две части одной стейт машины, но это сложно кодить и оно напрямую с fingerprint не связано

допустим SPA перешел в режим редактирования проекта #1, например начался процесс рисования новой схемы, об этом извещается сервер, который запоминает состояние и будет отсекать все попытки взаимодействия с api не подпадающие под случаи: "рисование схемы отменено", "сохранение схемы", "отмена редактирования проекта #1" как некорректные

это тоже можно обойти, но тогда придется или сильно переписать SPA\приложение или делать эмулятор сервера

к твоей задаче про ограничение взаимодействия с api это никак не соотносится, это больше про несколько копий в разных вкладках
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 18:14
@Nuzsk Вот да... Ща напишу пример
Dave
@aios
Nov 26 2016 18:14
@Nuzsk Ну это не столько к копиям - сколько к сторонним клиентам
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 18:17

@aios Давай такой кейс: Пусть у меня есть сервис который переводит текст.
На запрос /translate?q=text он вернет переведенный текст. Хочу использовать его в своем SPA, но не давать использовать кому-то еще.

Любые штуки типа ApiKey и т.д. в данном случае не имеют смысла, так как SPA на клиенте, и эти данные видны пользователю.

CORS, предложенный @Nuzsk хорошая идея. Но как быть, если я хочу дать доступ к API и приложению на телефоне.

Еще есть вариант, что я захочу продавать доступ к API сторонним SPA. Тут можно, как я понимаю, просто добавлять их домены в CORS. Но как тестить разработчикам тогда на localhost? :D

Sergey Gladkovskiy
@smgladkovskiy
Nov 26 2016 18:23
@Furdarius JWT смотрел?
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 18:24
@smgladkovskiy Да-да, не о том.
Dave
@aios
Nov 26 2016 18:24
@Furdarius к сожалению мой кейс работает только в одном направлении
обратного я еще не делал =(
то есть защитить у меня получилось
а раззащитить - неа
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 18:25

@aios Лол)

Не, ты расскажи как действовал бы для предложенного мной кейса.

Dave
@aios
Nov 26 2016 18:26
ну продажа чего либо подразумевает уже какие либо аккаунты
уже какую то энтити хранения данных
и там добавлял бы данную в JWT мол этот фингер не проверять.
но фингер бы все равно генерил и совал бы в custom-claims
так чисто ради прикола
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 18:32

@aios А как узнать, что запрос пришел от SPA определенного аккаунта? Или, если формально, то как определить, что запрос принадлежит опреленному аккаунту?

Использовать, данные, которые прислал клиент, имхо, нельзя.

Dave
@aios
Nov 26 2016 18:33
@Furdarius JWT
тут проще
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 18:36

@aios Ты имеешь ввиду такой кейс: При создании аккаунта генерим JWT (Подписанный конечно), отдаем его покупателю. Покупатель прописывает в свое SPA. И при каждом запросе к API передает и этот JWT. Сервис валидирует JWT и такой типа "О ништяк, этого парня я знаю"

Правильно я понял?

Тут всё круто, если бы не SPA, как мне кажется...
Просто приходит левый чел на сайт покупателя. Берет его JWT, вставляет к себе в SPA и теперь он под аккаунтом того чела работает.
Dave
@aios
Nov 26 2016 18:38
@Furdarius а перед этим ты генеришь фингер и суешь в кастом клаймс
расширяешь валидацию JWT фингерпринтом
то бишь с какого клиента начал работу
с такого и продолжит
иначе досвидос
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 18:40
@aios Подожди, ведь, у каждого пользователя, который находится на SPA моего покупателя фингерпринт разный?
Dave
@aios
Nov 26 2016 18:40
@Furdarius ну да потому что браузер разный
вкладки разные
сумарный шанс того что у кого то будут одинаковые
  • то что именно они начнут ломать
0.00000000000001
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 18:41

@aios Да, верно. Но ведь не важно какой браузер у пользователя SPA. И вообще, не важно, кто является пользователем SPA.

Нужно определять кто является владельцем SPA :D

Dave
@aios
Nov 26 2016 18:42
я тебе так скажу - если ты сохранишь спа к себе на комп
и запустишь его в том же самом виде
и откроешь
фингер будет уже другой
это понятно?)
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 18:43
@aios Это я понимаю)
Ладно, я устал) Я еще посмотрю что за пакет от Valve, спасибо @aios
KarmaBot
@KarmaBot
Nov 26 2016 18:45
Спасибо (+1) для @aios принято! Текущая карма +278.
Dave
@aios
Nov 26 2016 18:46
@Furdarius "Ой фсе?"
Artemiy Ryabinkov
@Furdarius
Nov 26 2016 18:46
@aios Хах) Ну нет, я готов обсуждать дальше)

@aios Щас ищу информацию на просторах нета обо всём этом, может что-то откопаю. И еще хочу глянуть исходники parse.com, ведь они как-то продавали своё API

Но, на текущий момент, мне кажется, что либо я не понимаю, что хочу. Либо ты не понимаешь, идею.

По поводу принта: получается, что мы валидируем пользователей SPA. Но ведь не они покупали доступ к API, а, скажем так, владелец домена, на котором SPA стоит.
Т.е. я вижу пока только один путь: давай проверять с какого домена пришел запрос на API

Artemiy Ryabinkov
@Furdarius
Nov 26 2016 18:58

@Nuzsk го в канал "оффтоп". @atehnix попросил туда отправиться со всей этой авторизацией.

P.S. А в gittere можно как-то линк на канал делать? Типа #offtop

cleargoal
@cleargoal
Nov 26 2016 19:45

вроде бы сделал правильно? - по туториалу:
1) Laravel 5.2, Oracle VirtualBox, PHP7:
2) по пути \resources\views\layouts имеется файл app.blade.php
в нем простейший шаблон со строкой @yield('content')
3) по пути \resources\views\ создан tasks.blade.php
в нем код (начало)
@extends('layouts.app')
@section('content')
дальше только хтмл разметка
4) по пути app/Http имеется файл routes.php
в нем маршрут
Route::get('/', function () {
return view('tasks');
});
это все выводит в браузер ошибку:
ErrorException in FileViewFinder.php line 137:
View [common.errors] not found. (View: /home/vagrant/laravel/resources/views/tasks.blade.php)

Прошу объяснить/указать варианты - почему он не находит файл вьюхи?

JhaoDa
@jhaoda
Nov 26 2016 19:53
@cleargoal не важно, но все же —почему ларавел 5.2?
@cleargoal и у тебя есть файл \resources\views\common\errors.blade.php?
JhaoDa
@jhaoda
Nov 26 2016 20:05
И тишина...
cleargoal
@cleargoal
Nov 26 2016 20:12
@jhaoda извини, отошел на пару минут...
1) Ларавел 5.2 потому что русская дока пока есть только на 5.2.
2) указанного тобой файла нет. Нет даже каталога common
JhaoDa
@jhaoda
Nov 26 2016 20:12
@cleargoal
1) учи английский
2) ну так какие вопросы-то? Тебе прямо об этом сказали, что непонятно?
cleargoal
@cleargoal
Nov 26 2016 20:17
при чем тут английский? Версия 5.2. работоспособна?
все непонятно и прежде всего - почему он не ходит файл вьюхи?
JhaoDa
@jhaoda
Nov 26 2016 20:18
@cleargoal потому что файла нет
cleargoal
@cleargoal
Nov 26 2016 20:22
но на диске он есть
JhaoDa
@jhaoda
Nov 26 2016 20:22

@cleargoal твой ответ?

2) указанного тобой файла нет. Нет даже каталога common

Ты давай там определись, есть или нет :)
cleargoal
@cleargoal
Nov 26 2016 20:24
это же ответ про файл ошибки errors.blade.php, а не про вьюху, которую я хочу увидеть
Arsen Soroka
@arsen-s
Nov 26 2016 20:29
@cleargoal я так понимаю что в одной с твоих вьюх есть подключение common.errors, отсюда и ошибка
@cleargoal заскринь layouts.app и tasks
cleargoal
@cleargoal
Nov 26 2016 20:31
@arsen-s в смысле - layouts/app.blade.php?
Arsen Soroka
@arsen-s
Nov 26 2016 20:31
@cleargoal да
ну проверь где у тебя вызывается этот common.errors или просто создай его
cleargoal
@cleargoal
Nov 26 2016 20:32
а куда скинуть скрин?
Arsen Soroka
@arsen-s
Nov 26 2016 20:32
можно сюда
cleargoal
@cleargoal
Nov 26 2016 20:32
@include('common.errors') нашелся :)
Arsen Soroka
@arsen-s
Nov 26 2016 20:33
@cleargoal я не удивлен
cleargoal
@cleargoal
Nov 26 2016 20:33
он в tasks.blade.php
Arsen Soroka
@arsen-s
Nov 26 2016 20:33
юхууу
cleargoal
@cleargoal
Nov 26 2016 20:33
Арсен, пожалуйста , не прикалывайся :)
я же туториал прохожу, чайник полный
читаю и потом копи-паст код
а что этот @include('common.errors') - не нужен?
Arsen Soroka
@arsen-s
Nov 26 2016 20:35
ну в этом инклуле ты, по сути, должен вывести все ошибки через foreach
если не хочешь выводить ошибки, то убери его
cleargoal
@cleargoal
Nov 26 2016 20:36
они и так вываливаются длинной страницей, но самая первая (наверно и вся причина в ней)
ErrorException in FileViewFinder.php line 137:
View [common.errors] not found. (View: /home/vagrant/laravel/resources/views/tasks.blade.php)
если я уберу его , моя ведь ошибка не исчезнет
Arsen Soroka
@arsen-s
Nov 26 2016 20:37
предлагаю
1) убрать подключение || создать пустой common/errors.blade.php(чтобы ты наконец то увидел свой tasks.blade)
2) перечитать 2-3 раза полностью доку,
3) проходить туториал
cleargoal
@cleargoal
Nov 26 2016 20:38
да?
проходить туториал после прочтения всей доки?
думал, что параллельно будет полезней...
хорошо.
понял
спасибо!
KarmaBot
@KarmaBot
Nov 26 2016 20:38
@cleargoal, в этом чате принято добавлять имя пользователя, чтобы его поблагодарить.
cleargoal
@cleargoal
Nov 26 2016 20:39
@arsen-s спасибо!
KarmaBot
@KarmaBot
Nov 26 2016 20:39
Спасибо (+1) для @arsen-s принято! Текущая карма +136.
cleargoal
@cleargoal
Nov 26 2016 20:39
а подключение вывода ошибок можно убрать комментированием строки?
Arsen Soroka
@arsen-s
Nov 26 2016 20:40
@cleargoal тебе лень пробовать?
просто у тебя такой вопрос, который решается за 15сек, а ты тратишь время на него чтобы увидеть ответ в чате
cleargoal
@cleargoal
Nov 26 2016 20:42
я 2-й день учу это, страшно поломать...
хотя ты прав, это можно и попробовать
попробовал, не помогло :(
cleargoal
@cleargoal
Nov 26 2016 20:47
удалил строку и увидел страницу...
так что - эту обработку ошибок не надо ставить во вьюхи вообще?
Arsen Soroka
@arsen-s
Nov 26 2016 20:51
@cleargoal все зависит от задачи
cleargoal
@cleargoal
Nov 26 2016 21:03
понятно, а я думал, что она обязательна, коль есть в туториале
@arsen-s мне нужен разработчик на Ларавель, чтобы сделать мне проект, а учиться я буду потихоньку, как ты посоветовал - прочту доку несколько раз
Ты можешь взять проект в разработку?
Arsen Soroka
@arsen-s
Nov 26 2016 21:31
@cleargoal извини, но у меня времени нет.
можешь запостить в оффтопе или в группе, может найдешь кого то