Muffin-Admin -- une extension de Muffin qui implémente des interfaces d'administration
Prise en charge de Peewee ORM, Mongo, SQLAlchemy Core via Muffin-Rest ;
Filtrage et tri automatiques des éléments ;
Contenu
Caractéristiques
Exigences
Installation
Usage
Authentification
Actions personnalisées
Options de configuration
Traqueur de bogues
Contribuer
Contributeurs
Licence
python >= 3,9
Muffin-Admin doit être installé en utilisant pip :
pip installer muffin-admin
Avec la prise en charge de SQLAlchemy Core :
pip install muffin-admin[sqlalchemy]
Avec le support Peewee ORM :
pip install muffin-admin[peewee]
Initialisez l'administrateur :
depuis muffin_admin import Pluginadmin = Plugin(**options)
Initialisez les gestionnaires d'administration (exemple pour Peewee ORM) :
à partir de muffin_admin importer PWAdminHandler @admin.route class UserResource(PWAdminHandler) : """Créer une ressource d'administration pour le modèle utilisateur.""" class Meta : """Ajuster la ressource.""" # Modèle Peewee pour le modèle de ressource d'administration = Utilisateur # Filtres filters = 'email' , 'created', 'is_active', 'role' # Ajuster les schémas de sérialisation/désérialisation schema_meta = { 'load_only' : ('mot de passe',), 'dump_only' : ('créé',), } # Colonnes à afficher = 'id', 'email', 'is_active', 'role', 'created' # Icône d'icône de matériau-interface utilisateur personnalisée = 'Personnes'
Connectez l'administrateur à une application Muffin :
admin.setup(application, **options)
Décorez une fonction d'authentification avec admin.check_auth
:
@admin.check_authasync def auth(request):"""Fausse méthode d'autorisation. Vérifie simplement qu'un jeton d'authentification existe dans la demande."""return request.headers.get('authorization')
Enregistrez une fonction pour renvoyer les informations de l'utilisateur :
@admin.get_identityasync def ident(request):"""Obtenir les informations sur l'utilisateur actuel."""pk = request.headers.get('authorization')user = User.select().where(User.id == pk) .first()if utilisateur:return {"id": user.id, "fullName": user.email}
Implémentez un gestionnaire de connexion pour la page d'authentification standard de réaction-admin :
@admin.loginasync def login(request):"""Connectez-vous un utilisateur."""data = wait request.data()user = User.select().where(User.email == data['username'], User.password == data['password']).first()return ResponseJSON(user et user.id)
Pour plus de références, vérifiez https://github.com/klen/muffin-admin/tree/develop/examples <examples> dans le référentiel.
à partir de muffin_admin importer PWAdminHandler @admin.route class UserResource(PWAdminHandler): # ... @PWAdminHandler.action('users/disable', view='list') async def Disable_users(self, request, resource=None) : ids = request.query.getall('ids ') # ... @PWAdminHandler.action('users/{id}/admin', view='show') async def mark_admin(self, request, resource=None): # ...
Nom | Valeur par défaut | Description |
préfixe | "/admin" | Préfixe de l'URL HTTP de l'administrateur |
titre | "Muffin Admin" | Titre de l'administrateur |
main_js_url | "{prefix}/main.js" | Un lien vers le fichier JS principal |
personnalisé_js_url | "" | Un lien vers le fichier JS personnalisé |
personnalisé_css_url | "" | Un lien vers un fichier CSS personnalisé |
URL_de connexion | None | Une URL HTTP pour votre page de connexion personnalisée |
URL de déconnexion | None | Une URL HTTP pour votre page de déconnexion personnalisée |
menu_sort | True | Trier les éléments de menu |
auth_storage | "localstorage" | Où conserver les informations d'autorisation (stockage local | cookies) |
auth_storage_name | muffin_admin_auth | Nom du stockage local/du cookie pour les informations d'authentification |
app_bar_links | [{'url': '/', 'icon': 'Home', 'title': 'Home'}] | Liens vers la barre d'applications |
mode_mutation | "optimistic" | Mode de mutation d'édition React-Admin (pessimiste | optimiste | annulable) |
Si vous avez des suggestions, des rapports de bogues ou des désagréments, veuillez les signaler au système de suivi des problèmes à l'adresse https://github.com/klen/muffin-admin/issues.
Le développement de Muffin-Admin a lieu sur : https://github.com/klen/muffin-admin
Klen (Kirill Klenov)
Sous licence MIT.