Muffin-Admin -- ekstensi Muffin yang mengimplementasikan antarmuka admin
Dukungan untuk Peewee ORM, Mongo, SQLAlchemy Core melalui Muffin-Rest;
Pemfilteran dan penyortiran otomatis berdasarkan item;
Isi
Fitur
Persyaratan
Instalasi
Penggunaan
Otentikasi
Tindakan Kustom
Opsi konfigurasi
Pelacak bug
Berkontribusi
Kontributor
Lisensi
ular piton >= 3.9
Muffin-Admin harus diinstal menggunakan pip:
pip instal muffin-admin
Dengan dukungan SQLAlchemy Core:
pip instal muffin-admin[sqlalchemy]
Dengan dukungan Peewee ORM:
pip install muffin-admin[peewee]
Inisialisasi admin:
dari muffin_admin impor Pluginadmin = Plugin(**pilihan)
Inisialisasi penangan admin (contoh untuk Peewee ORM):
dari muffin_admin impor PWAdminHandler @admin.rute class UserResource(PWAdminHandler): """Buat Sumber Daya Admin untuk model Pengguna.""" class Meta: """Sesuaikan sumber dayanya.""" # Model Peewee untuk model sumber daya admin = Pengguna # Filter filter = 'email' , 'dibuat', 'is_aktif', 'peran' # Sesuaikan skema serialisasi/deserialisasi skema_meta = { 'load_only': ('password',), 'dump_only': ('diciptakan',), } # Kolom untuk menampilkan kolom = 'id', 'email', 'is_active', 'role', 'created' # Ikon Material-UI Kustom icon = 'Orang'
Hubungkan admin ke aplikasi Muffin:
admin.setup(aplikasi, **opsi)
Hiasi fungsi otentikasi dengan admin.check_auth
:
@admin.check_authasync def auth(request):"""Metode otorisasi palsu. Cukup periksa apakah ada token autentikasi dalam permintaan."""return request.headers.get('authorization')
Daftarkan fungsi untuk mengembalikan informasi pengguna:
@admin.get_identityasync def ident(request):"""Dapatkan informasi pengguna saat ini."""pk = request.headers.get('authorization')user = User.select().where(User.id == pk) .first()jika pengguna:return {"id": pengguna.id, "nama lengkap": pengguna.email}
Terapkan pengendali login untuk halaman autentikasi react-admin standar:
@admin.loginasync def login(permintaan):"""Masuk pengguna."""data = menunggu permintaan.data()pengguna = Pengguna.pilih().di mana(Pengguna.email == data['nama pengguna'], User.password == data['password']).first()return ResponseJSON(user dan user.id)
Untuk referensi lebih lanjut, periksa https://github.com/klen/muffin-admin/tree/develop/examples <examples> di repositori.
dari muffin_admin impor PWAdminHandler @admin.rute class UserResource(PWAdminHandler): # ... @PWAdminHandler.action('users/disable', view='list') async defdisable_users(self, request, resource=None): ids = request.query.getall('ids ') # ... @PWAdminHandler.action('users/{id}/admin', view='show') async def mark_admin(mandiri, permintaan, sumber daya=Tidak Ada): # ...
Nama | Nilai bawaan | Keterangan |
awalan | "/admin" | Awalan URL HTTP Admin |
judul | "Muffin Admin" | Judul Admin |
main_js_url | "{prefix}/main.js" | Tautan ke file JS utama |
custom_js_url | "" | Tautan ke file JS khusus |
custom_css_url | "" | Tautan ke file CSS khusus |
login_url | None | URL HTTP untuk halaman login khusus Anda |
logout_url | None | URL HTTP untuk halaman logout kustom Anda |
menu_sort | True | Urutkan item menu |
auth_storage | "localstorage" | Tempat menyimpan informasi otorisasi (penyimpanan lokal|cookie) |
auth_storage_name | muffin_admin_auth | Penyimpanan lokal/Nama cookie untuk info autentikasi |
app_bar_links | [{'url': '/', 'icon': 'Home', 'title': 'Home'}] | Tautan bilah aplikasi |
mutasi_mode | "optimistic" | Mode edit mutasi React-Admin (pesimis|optimis|tidak dapat dibatalkan) |
Jika Anda memiliki saran, laporan bug, atau gangguan, harap laporkan ke pelacak masalah di https://github.com/klen/muffin-admin/issues
Pengembangan Muffin-Admin terjadi di: https://github.com/klen/muffin-admin
klen (Kirill Klenov)
Berlisensi di bawah lisensi MIT.