Muffin-Admin – eine Erweiterung von Muffin, die Admin-Schnittstellen implementiert
Unterstützung für Peewee ORM, Mongo, SQLAlchemy Core durch Muffin-Rest;
Automatisches Filtern und Sortieren nach Artikeln;
Inhalt
Merkmale
Anforderungen
Installation
Verwendung
Authentifizierung
Benutzerdefinierte Aktionen
Konfigurationsoptionen
Bug-Tracker
Mitwirken
Mitwirkende
Lizenz
Python >= 3.9
Muffin-Admin sollte mit pip installiert werden:
pip install muffin-admin
Mit SQLAlchemy Core-Unterstützung:
pip install muffin-admin[sqlalchemy]
Mit Peewee ORM-Unterstützung:
pip install muffin-admin[peewee]
Initialisieren Sie den Administrator:
from muffin_admin import Pluginadmin = Plugin(**Optionen)
Admin-Handler initialisieren (Beispiel für Peewee ORM):
aus muffin_admin PWAdminHandler importieren @admin.route class UserResource(PWAdminHandler): „“„Admin-Ressource für das Benutzermodell erstellen.“““ class Meta: „“„Optimieren Sie die Ressource.“““ # Peewee-Modell für das Admin-Ressourcenmodell = Benutzer # Filter Filter = „E-Mail“ , 'created', 'is_active', 'role' # Serialisierungs-/Deserialisierungsschemata optimieren schema_meta = { 'load_only': ('password',), 'dump_only': ('erstellt',), } # Spalten zum Anzeigen von columns = 'id', 'email', 'is_active', 'role', 'created' # Benutzerdefiniertes Material-UI-Symbol icon = 'People'
Verbinden Sie den Administrator mit einer Muffin-Anwendung:
admin.setup(app, **Optionen)
Dekorieren Sie eine Authentifizierungsfunktion mit admin.check_auth
:
@admin.check_authasync def auth(request):"""Gefälschte Autorisierungsmethode. Prüft nur, ob in der Anfrage ein Authentifizierungstoken vorhanden ist."""return request.headers.get('authorization')
Registrieren Sie eine Funktion, um Benutzerinformationen zurückzugeben:
@admin.get_identityasync def ident(request):"""Aktuelle Benutzerinformationen abrufen."""pk = request.headers.get('authorization')user = User.select().where(User.id == pk) .first()if user:return {"id": user.id, "fullName": user.email}
Implementieren Sie einen Login-Handler für die standardmäßige React-Admin-Authentifizierungsseite:
@admin.loginasync def login(request):"""Anmelden eines Benutzers."""data = waiting request.data()user = User.select().where(User.email == data['username'], User.password == data['password']).first()return ResponseJSON(user and user.id)
Weitere Referenzen finden Sie unter https://github.com/klen/muffin-admin/tree/develop/examples <examples> im Repository.
aus muffin_admin PWAdminHandler importieren @admin.route class UserResource(PWAdminHandler): # ... @PWAdminHandler.action('users/disable', view='list') async def discover_users(self, request, resources=None): ids = request.query.getall('ids ') # ... @PWAdminHandler.action('users/{id}/admin', view='show') async def mark_admin(self, request, Ressource=Keine): # ...
Name | Standardwert | Beschreibung |
Präfix | "/admin" | HTTP-URL-Präfix des Administrators |
Titel | "Muffin Admin" | Titel des Administrators |
main_js_url | "{prefix}/main.js" | Ein Link zur Haupt-JS-Datei |
custom_js_url | "" | Ein Link zur benutzerdefinierten JS-Datei |
custom_css_url | "" | Ein Link zur benutzerdefinierten CSS-Datei |
login_url | None | Eine HTTP-URL für Ihre benutzerdefinierte Anmeldeseite |
logout_url | None | Eine HTTP-URL für Ihre benutzerdefinierte Abmeldeseite |
menu_sort | True | Menüpunkte sortieren |
auth_storage | "localstorage" | Wo werden Autorisierungsinformationen gespeichert (localstorage|cookies) |
auth_storage_name | muffin_admin_auth | Lokaler Speicher/Cookie-Name für Authentifizierungsinformationen |
app_bar_links | [{'url': '/', 'icon': 'Home', 'title': 'Home'}] | Appbar-Links |
Mutationsmodus | "optimistic" | React-Admin Mutationsmodus bearbeiten (pessimistisch|optimistisch|rückgängig machen) |
Wenn Sie Vorschläge, Fehlerberichte oder Ärgernisse haben, melden Sie diese bitte dem Issue-Tracker unter https://github.com/klen/muffin-admin/issues
Die Entwicklung von Muffin-Admin erfolgt unter: https://github.com/klen/muffin-admin
Klen (Kirill Klenov)
Lizenziert unter einer MIT-Lizenz.