169 похожих чатов

Добрый день, ребят. Пробую потихоньку перейти на aiogram3. У меня есть

несколько ролей, для которых есть отдельные роутеры. То есть скажем для администратора и для клиента, команда start будет отрабатывать по разному.
Соответственно у них разные роутеры и разные handler'ы.

Как мне реализовать такое распределение по роутерам? Ориентируясь на гайд от Груши - нужно ли мне делать это через middleware, а после вешать его на роутер?

21 ответов

40 просмотров

Мне кажется, здесь правильно сделать outer middleware, в котором прокидывать в апдейт роль юзера, а на каждый роутер навесить фильтр, который будет пропускать только в случае совпадения роли

Андрей-🐍 Автор вопроса
Groosha
Мне кажется, здесь правильно сделать outer middlew...

Отлично! У меня была идея сделать именно так, но я завалился на middleware. Я пытался повесить два middleware на два router'а, это выглядело примерно так: admin_router.message.middleware(FromAdminsMessageMiddleware()) client_router.message.middleware(FromClientMessageMiddleware()) dp.include_router(client_router) dp.include_router(admin_router) В таком случае, проверка будет проходить только на первом router'e, то есть до второго middleware вообще не доходит событие.

Андрей 🐍
Отлично! У меня была идея сделать именно так, но я...

Мидлварь тебе надо повесить на диспетчер (т.е. на корневой роутер)

Андрей-🐍 Автор вопроса

Речь про мою реализацию? Подскажи пожалуйста, как я могу это сделать? Сильно удивился, как много всего изменили в aiogram3 :)

Андрей 🐍
Речь про мою реализацию? Подскажи пожалуйста, как ...

Ну вон я тебе выше рассказал на словах. Кодом не могу, сорян, не у компа

Groosha
Мне кажется, здесь правильно сделать outer middlew...

а почему нельзя все через фильтр сделать?

Ilya Lyapin (Nestyreff)
а почему нельзя все через фильтр сделать?

Так тебе надо в разных роутерах одно и то же проверять. Проще же один раз мидлварью получить данные и прокинуть в кучу разных мест

Андрей-🐍 Автор вопроса
Groosha
Ну вон я тебе выше рассказал на словах. Кодом не м...

Ничего страшного, очень тебе благодарен. Сейчас попробую сам потыкать и разобраться.

Андрей-🐍 Автор вопроса
Groosha
Расскажи потом, пожалуйста, как успехи

Если это не сарказм, то без проблем :)

Андрей-🐍 Автор вопроса
Groosha
Не сарказм)

Мало ли. Здесь любят побуллить всяких ботоё...)

Андрей 🐍
Мало ли. Здесь любят побуллить всяких ботоё...)

Любят, и я тоже :) Но сейчас мне реально интересно. Может получиться хороший use-case

Андрей 🐍
Ничего страшного, очень тебе благодарен. Сейчас по...

Подсказали в соседнем чате: То, что ты прокинул через мидлварь (напр. data[“role”] = “govno”) В фильтре достаётся как аргумент функции (как в хэндлерах), то есть, аргумент role

Андрей-🐍 Автор вопроса

Я в __call__ в фильтре принял это как kwargs и оттуда дёргаю kwargs["role"].

А можно сразу как role

Андрей-🐍 Автор вопроса
Groosha
А можно сразу как role

Да-да, уже поправил :)

Groosha
Тут ещё и keyerror потенциальный

Там в целом тоже ошибка будет, если не будет роли в контексте, только другая)

Похожие вопросы

Обсуждают сегодня

сурсы: import std/asyncdispatch, std/httpclient, std/json, std/sequtils, std/strutils, std/unicode, std/unidecode, std/uri, uuid4, regex const GPT4_API...
Qtless Qtless
4
А ещё docker можно к ассемблеру прикрутить. В целом, системы сборки это настолько несвязанная вещь... Это оффтоп, можно сказать, во всех чатах. Это просто проект, который помо...
КТ315
22
Раз пошла тема про XML... Delphi XE 10.4.2(но это не важно), XML Data Binding Несколько XSD. В основном содержатся include на расширения. Несколько Namespace, это важно. Бин...
Alexey Gavrilov
4
вот что получается в интерпрететоре, работает и результаты выгляд разумными, но то как выглядит код мне не нравиться, а понять куда двигаться не очень могу, если кому не лень ...
Fedor
42
Какие в фасме есть определения для 128 и 256-битных слов?
The Bird of Hermes
12
вот еще вопрос ошибка app/Main.hs:135:13: error: [GHC-83865] • Couldn't match type: MoveInfo -> Coords with: (Int, Int) Expected: Coords ...
Fedor
21
Вопрос всем обфускаторщикам — ЗАЧЕМ?
Александр Белокопытов
20
получается, что он находит одинаковое колво тегов, с разными именами, или я что тто не понял в таксоупе ?
Fedor
46
Вот правильно, на пользователя давать роли и расширять функционал и авторизацию в зависимости от роли. А теперь вопрос, был ли у кого-то кейс, что бы, например, имея роль: а...
Alex Molchanov
5
Всем привет, если выскакивает ошибка при попытке зайти в админку, что это может быть? Как исправить? Перенос сайта на новый хостинг. Версия php 7.4.33 -> 7.4.5 Версия evo 1....
Михаил
16
Карта сайта