Muffin-Admin — расширение Muffin, реализующее интерфейсы администратора.
Поддержка Peewee ORM, Mongo, SQLAlchemy Core через Muffin-Rest;
Автоматическая фильтрация и сортировка товаров;
Содержание
Функции
Требования
Установка
Использование
Аутентификация
Пользовательские действия
Варианты конфигурации
Трекер ошибок
Содействие
Авторы
Лицензия
питон >= 3.9
Muffin-Admin следует установить с помощью pip:
pip установить muffin-admin
С поддержкой SQLAlchemy Core:
pip install muffin-admin[sqlalchemy]
Благодаря поддержке Peewee ORM:
pip install muffin-admin[peewee]
Инициализируем администратора:
из muffin_admin import Pluginadmin = Plugin(**options)
Инициализируйте обработчики администратора (пример для Peewee ORM):
из muffin_admin импортировать PWAdminHandler @admin.route class UserResource(PWAdminHandler): """Создать ресурс администратора для модели пользователя.""" class Meta: """Настроить ресурс.""" # Модель Peewee для модели ресурса администратора = Пользователь # Фильтры фильтры = 'email' , 'created', 'is_active', 'role' # Настройте схемы сериализации/десериализации Schema_meta = { 'load_only': ('password',), 'dump_only': ('создано',), } # Столбцы для отображения столбцов = 'id', 'email', 'is_active', 'role', 'created' # Custom Material-UI icon icon = 'People'
Подключите администратора к приложению Muffin:
admin.setup(приложение, **опции)
Украсьте функцию аутентификации с помощью admin.check_auth
:
@admin.check_authasync def auth(request):"""Поддельный метод авторизации. Просто проверяет наличие токена аутентификации в запросе."""return request.headers.get('authorization')
Зарегистрируйте функцию для возврата информации о пользователе:
@admin.get_identityasync def ident(request):"""Получить информацию о текущем пользователе."""pk = request.headers.get('authorization')user = User.select().where(User.id == pk) .first()if user:return {"id": user.id, "fullName": user.email}
Реализуйте обработчик входа в систему для стандартной страницы аутентификации администратора реакции:
@admin.loginasync def login(request):"""Войти в систему."""data = await request.data()user = User.select().where(User.email == data['username'], User.password == data['password']).first()return ResponseJSON(user и user.id)
Для получения дополнительной информации проверьте https://github.com/klen/muffin-admin/tree/develop/examples <examples> в репозитории.
из muffin_admin импортировать PWAdminHandler @admin.route class UserResource(PWAdminHandler): # ... @PWAdminHandler.action('users/disable', view='list') async def disable_users(self, request, resources=None): ids = request.query.getall('ids ') # ... @PWAdminHandler.action('users/{id}/admin', view='show') async def mark_admin(self, request, ресурс=Нет): # ...
Имя | Значение по умолчанию | Описание |
префикс | "/admin" | Префикс URL-адреса HTTP администратора |
заголовок | "Muffin Admin" | Должность администратора |
main_js_url | "{prefix}/main.js" | Ссылка на основной JS-файл |
custom_js_url | "" | Ссылка на пользовательский JS-файл |
custom_css_url | "" | Ссылка на пользовательский файл CSS |
URL-адрес_логина | None | URL-адрес HTTP для вашей пользовательской страницы входа. |
logout_url | None | URL-адрес HTTP для вашей пользовательской страницы выхода из системы. |
меню_сортировка | True | Сортировка пунктов меню |
auth_storage | "localstorage" | Где хранить информацию об авторизации (localstorage|cookies) |
имя_хранилища_аутентификации | muffin_admin_auth | Имя Localstorage/Cookie для информации аутентификации |
app_bar_links | [{'url': '/', 'icon': 'Home', 'title': 'Home'}] | Ссылки на панель приложений |
режим_мутации | "optimistic" | Режим мутации редактирования React-Admin (пессимистический|оптимистический|отменяемый) |
Если у вас есть какие-либо предложения, сообщения об ошибках или неприятности, сообщите о них в систему отслеживания проблем по адресу https://github.com/klen/muffin-admin/issues.
Разработка Muffin-Admin происходит по адресу: https://github.com/klen/muffin-admin.
клен (Кирилл Кленов)
Лицензировано по лицензии MIT.