
Adel
07.06.2018
15:05:10
в доку бы не полез. лень

Евгений
07.06.2018
15:05:28
правильно

Сергей
07.06.2018
15:05:49

Евгений
07.06.2018
15:07:01
то есть это нормально других людей просить за себя смотреть в доку?

Google

Евгений
07.06.2018
15:07:09
скажи, это было в доке?

Сергей
07.06.2018
15:08:41
скажи, это было в доке?
там обычный пример
Route::put('post/{id}', function ($id) {
//
})->middleware('role:editor');

Евгений
07.06.2018
15:10:19
какой пакет юзаешь для ролей?

Сергей
07.06.2018
15:10:57


Игорь
07.06.2018
15:21:15
Есть бд. В бд есть таблица с фильмами, странами (1 ко многим), студиями(1 ко ногим), жанрами (многие ко многим), актёрами (многие ко многим).
Нужно получить список фильмов с определёнными странами, студиями, жанрами и актёрами.
Со связями 1 ко многим легче - т.к. фильмы и идентификаторы находятся в 1 таблице. Но кол-во выбранных стран и студий может разниться . Делать несколько запросов в бд и совмещать результаты?
Например:
$films = array();
foreach ($counties as $country) {
$films = array_merge ($films, Films::where('country_id', $country)
}
Выходит очень дофига запросов к бд.
А если посмотреть на то что ещё есть связи многие ко многим дак это вообще печаль получается, ибо связь с основной таблицей там имется только через вспомогательные по ключам. При этом всём нужно всё это дело сортировать по дате / году выпуска / алфавиту / рейтингу и т.п.
Вроде как в ларавеле есть функции облегчающие и оптимизирующие всё это дело.
Подскажите пожалуйста как это всё грамотно сделать?


Сергей
07.06.2018
15:22:42
role:admin,manager
ну кстати с таким вариантом если у админа нет менеджера в ролях то не пускает)

Adel
07.06.2018
15:23:13
и просто менеджера тогда не должно пускать...

Сергей
07.06.2018
15:23:32

Adel
07.06.2018
15:23:45
тогда и просто админа должно пускать...

Сергей
07.06.2018
15:24:31
если менагер первый то манагера пускает а просто админа нет и наоборот если админ первый то просто манагера не пускает)

Adel
07.06.2018
15:25:36
ну тогда делай как все нормальные делают. либо используй can: либо пиши свои миддлвары.

Google

Maksim (Ellrion)
07.06.2018
15:26:35
role и так его мидл

Сергей
07.06.2018
15:26:43

Евгений
07.06.2018
15:27:20


Maksim (Ellrion)
07.06.2018
15:27:28
@kardashov ты лучше на основании ролей определи абилки (или политики) и юзай can

Adel
07.06.2018
15:29:09

Евгений
07.06.2018
15:29:13
Film::whereHas('countries', function($query) use ($countriesIds) {
$query->whereIn('id', $countriesIds);
})->whereHas('genres', ....)....

Maksim (Ellrion)
07.06.2018
15:29:34

Adel
07.06.2018
15:30:08
я и так слишком низкого мнения о людях.. зачем его еще ниже делать...

Евгений
07.06.2018
15:30:16
сделай тут перед id dd($role);

Adel
07.06.2018
15:30:57
там очевидно надо implode сделать вроде.
и проверять кучу ролей. но can лучше

Maksim (Ellrion)
07.06.2018
15:31:23

Adel
07.06.2018
15:31:31
дада. вечно путаю

Сергей
07.06.2018
15:32:36
у меня api как я can смогу юзать?

Евгений
07.06.2018
15:32:52
public function handle($request, Closure $next, array $roles) попробуй и сделай dd($roles)

Игорь
07.06.2018
15:34:02

Евгений
07.06.2018
15:34:23
всё равно, там через связь вытаскивается

Maksim (Ellrion)
07.06.2018
15:34:27

Евгений
07.06.2018
15:34:29
просто массив да

Google

Сергей
07.06.2018
15:34:40

Евгений
07.06.2018
15:34:57
ну тогда верни стринг и делай explode

Сергей
07.06.2018
15:35:10

Игорь
07.06.2018
15:35:35

Евгений
07.06.2018
15:36:01

Сергей
07.06.2018
15:36:09

Евгений
07.06.2018
15:36:29
ты dd($role); делал и там одна роль?

Сергей
07.06.2018
15:36:42

Евгений
07.06.2018
15:36:53
в каом то проекте я делал мидлварю с ролями, щас попробую вспомнить где и посмотрю

Игорь
07.06.2018
15:37:15

Евгений
07.06.2018
15:37:28
смотри через дебагбар

Adel
07.06.2018
15:37:32
public function handle($request, Closure $next, ...$guards)
вот вроде как надо делать

Maksim (Ellrion)
07.06.2018
15:38:00

Сергей
07.06.2018
15:38:02

Adel
07.06.2018
15:38:23

Евгений
07.06.2018
15:38:28
а тьфу блин, я забыл про вариант с ...
так и делал у себя

Сергей
07.06.2018
15:38:57
ну дальше всё понятно уже как делать)
а что вы юзаете для ролей?

Google

Евгений
07.06.2018
15:40:19
примерно то же самое

Сергей
07.06.2018
15:40:41

Евгений
07.06.2018
15:40:43
хотя у меня в последних проектах кроме роли админа ничего не было, поэтому там намного проще) у юзера is_admin поле и всё

Adel
07.06.2018
15:40:52

Сергей
07.06.2018
15:41:50

Adel
07.06.2018
15:42:11
как просит продакт оунер

Евгений
07.06.2018
15:42:14
https://github.com/romanbican/roles - вот один раз юзал пакет, но в итоге очень мало что из него использовал. Да и давно это было. И пакет сам по всей видимости уже не поддерживается

Maksim (Ellrion)
07.06.2018
15:42:19

Adel
07.06.2018
15:42:19
какую авторизацию и т.д.

Dave
07.06.2018
15:42:29
топлю за bouncer
но сам какого то хера юзаю laratrust

Сергей
07.06.2018
15:43:12

Maksim (Ellrion)
07.06.2018
15:43:25
фигня все эти пакеты. или юзать половину не будешь или переделаешь половину под себя в итоге

Антон
07.06.2018
15:43:44
а я entrust юзал )

Adel
07.06.2018
15:43:48
которые почти не прикасаются

Maksim (Ellrion)
07.06.2018
15:44:33

Adel
07.06.2018
15:44:34

Maksim (Ellrion)
07.06.2018
15:47:07

Google

Adel
07.06.2018
15:48:02
ну вот для меня - нет. это ведь интерфейсная даже больше вещь. бизнес логика для меня - заказ, его итемы, скидки, правила отмены.. и т.д.
кто что может с ним делать - это параллельная вселенная

Nik
07.06.2018
15:48:51
RBAC и есть часть БЛ

Maksim (Ellrion)
07.06.2018
15:49:25
бл - " совокупность правил, принципов, зависимостей поведения объектов предметной области (области человеческой деятельности, которую система поддерживает). Иначе можно сказать, что бизнес-логика — это реализация правил и ограничений автоматизируемых операций."

Adel
07.06.2018
15:50:29
ну для меня "моя бизнес-логика" и RBAC - это вообще разные вещи. тупо по принципу SRP.
но я могу быть неправ
вообще говоря спор ниочем. что называть БЛ - чисто БЛ или еще и авторизацию - смысла мало.
А вот в чем смысл есть - это где авторизацию хранить. в Application(Service) layer или в Domain layer. Для меня очевидно что в первом.

Антон
07.06.2018
15:53:32
в DDD авторизация думаю на слое приложения а не домена находится

Adel
07.06.2018
15:53:39

Nik
07.06.2018
15:54:01

Edgar
07.06.2018
15:54:04
поподробнее с этого момента

Антон
07.06.2018
15:54:10
просто тут у каждого свое мнение, один топит за DDD, другой понимает иначе

Edgar
07.06.2018
15:54:14
про авторизацию на слое приложения
а если там например на объекте только определенные люди могут выполнять действие?

Adel
07.06.2018
15:54:39
меня тут чот все начали называть адептом DDD :) хотя я по DDD ни одного приложения не сделал...

Антон
07.06.2018
15:54:58

Edgar
07.06.2018
15:55:01
ну либо пример с заказом и отменой только определенными людьми при определенных обстоятельствах