Ortak CMS rolleri ve erişim seviyeleri

8 Cevap php

Ben şu anda bir CMS yazma ve birisi (burada üzerinde olabilir) sağlam yeterli kullanıcı izinleri sistemine sahip olmadığı için mevcut CMS eleştirmek hatırlıyorum duyuyorum. Ben bir yöntem planlanan var ama ben bunu anlayış yapar çok ince taneli bir bit olmak ve bunu son kullanıcılar için bir korku uygulanması olağan tuzağına düşmüş hissediyorum.

Ben izinlerine sahip varsayılan kullanıcı rolleri bir dizi olan bu cevap olacağını düşünüyorum, bu yüzden benim soru bu herhalde:

Eğer bir CMS görmek istiyorum ve izinlerin ne tür bu ile ilişkili olacaktır varsayılan rolleri nelerdir?

Şimdiden teşekkürler!

8 Cevap

Bu benim en projelerde ile sona erdi ve çok mutluyum "en iyi uygulama" dir:

1. Roles

Bu rolleri söz konusu olduğunda, ben (roles like "contributor", "manager" vb are not hard-coded, but put into a configuration file that can be changed per application) oluşturmak ve serbestçe kullanıcı hesaplarını ve grupları tanımlamak için yeteneği, yani büyük esneklik öneririz. Rolü yapılandırma kullanıcıya anlayamayacağı, ama motoru kendisi kodlanmış rollerden arınmış olmalıdır.

2. Rights

Rights şeyler olması gerekir nerede easy to understand and implement.

Ben çalışmak çok iyi tecrübeler ve karşı kontrol, very fine-grained rights on the code / API level adres:

  • görmek
  • görünüm
  • düzenleme
  • adını değiştirmek
  • adını değiştirmek
  • silmek
  • hareket
  • haklarını değiştirin
  • vb

fakat the user never görmeks those. Onlar için, onlar grouped "sağcı grupların" çok az sayıda içine şunlardır:

  • Sadece Oku
  • Düzenle
  • Administer = Move, adını değiştirmek....

Kullanıcı hakkı "hareket" görür, ama sadece "yönetme" hakları grubu asla.

Bu şekilde, retain the full power of fine-grained rights gelecek için kod - Eğer, örneğin, kolayca "stajyerler, sayfaları düzenlemek mümkün olabilir, ama onların başlıklarını değiştirmek mümkün olmamalıdır gibi bir kural için ne de ağırlayacak CMS değerli bir varlık ekleyerek, "onları silin. Son kullanıcı için, bu işlevsellik görünmez kalır ve kullanılacak hakları sistemi kolay.

I asked this question biraz önce ve şu yanıtı aldım.

admin           //Manage everything
manager         //Manage most aspects of the site
editor          //Scheduling and managing content
author          //Write important content
contributors    //Authors with limited rights
moderator       //Moderate user content
member          //Special user access
subscriber      //Paying Average Joe
user            //Average Joe

Eğer RBAC gibi mevcut çözümleri araştırdım? Böyle bir sistem büyük olasılıkla size doğru yoldayız güveni artırmak için yaptığınız en azından yardım çatlamak için çalışıyoruz, özellikle fındık için tam bir overkill olurdu iken.

Bu bir yana, ben beklediğiniz genel roller çizgisinde olacaktır:

Administator - Sistemin toplam kontrolü, (sen all changes oturum olması gerektiği gibi), vb günlüklerini görüntülemek artı olabilir ...

Publisher - içerik canlı koymak artı miyim ...

Author - içerik oluşturabilir miyim

Şeyler zor olsun nerede Ancak, bu roller sistemi genelinde nasıl uygulandığını, belirli bir kullanıcı muhtemelen farklı içerik alanı / modüller için farklı haklara sahip olduğu gibi, olduğunu.

Çoğu uygulama için, bu yüzden benim müşteriler genellikle hakları odaklı bir yaklaşımı tercih, aynı zamanda CMSS için de geçerli olacak düşünüyorum. İşte nasıl gider:

  1. Sen ana eylemleri listeler. CMS'inizde olurdu: oluşturma ve düzenleme içeriği; Içeriği silme; Sınıflandırmak / içerik kategorize; Içeriğini doğrulamak; Içerik yayınlamak; Kullanıcıları yönetmek; Vb
  2. Siz eylemleri her kullanıcı için izin verilen veya reddedilen ne tanımlamak

(Bir rol seçilir formu ön doldurarak) tipik kullanıcılar oluşturma kolaylaştırmak için işler biraz daha iyi hale getirmek için, çeşitli rolleri (Yönetici Düzenleör) oluşturabilirsiniz.

Ben CMS (yani ek kullanıcıları için özel kaynaklar inkar veya başkalarının normalde yapamadım kaynaklara erişmek için izin verebilirsiniz) bazı temel rolleri uzandığı zerdüştlerin ACL kullanıyor Zend Framework üzerine inşa edilmiş bir özel var. (Ben sadece tüm kimlik saklamak için tek kullanıcılar tablo kullanabilirsiniz) aşağıdaki gibi benim temel rolleri et "üyelerine" tüm şekilde aşağı CMS kullanıcıları gidin.

Developer

Herhangi bir içerik, düzenleme düzenleri, ayarları, yapılandırma düzenleyin. Kabuk komut dosyalarını aramak ve cron işleri zorlayabilir özel araçlarını kullanın.

Admin

Herhangi bir içerik, düzenleme düzenleri, ayarlarınızı düzenleyin.

Author

Düzenle içeriği.

Member

Giriş ekranı görebilirsiniz, şifre ve hata raporu unuttum.

Kolayca baz ACL sınıfını genişletir ve temel rolleri uzanan yeni roller ekleyebilir böylece Şimdi, Zend güzel bir ACL uygulama vardır. Yani Geliştirici araçlardan biri (örn. tasfiye veya önbellek yönetimi) veya sadece bloglar (ve örnek haber için) yönetmek için muktedir bir yazar kilitlemek erişimi olan bir "Yönetici" yapabilir.

Ben mutlaka anda sahip ince taneli kontrol sistemini görevden olmaz. Eğer basitleştirilmiş bir arayüz (örn. cephe desen veya adaptör desen kullanmak) sağlayarak karmaşıklığı Saklanıyor üzerinde uyarlanabilir odak noktası bir tane varsa. Faydaları size daha sonra bunları gerektiğinde hala ince taneli özelliklerini korurken (örneğin daha karmaşık izin taşıma silmek için izin vermek ("admin" gibi basit izinleri 'post' delete 'olabilir) basitleştirilmiş sürümü ile kullanıcılara sunuyor olmaları sonrası kategorisi X kendi sonrası olduğunda) nakleder. Sonra bazı yerlerde bu ihtiyacı için basitleştirilmiş sürümü için bir alternatif sağlayabilir.

Yönetici - + Tüm aşağıda kullanıcılar yaratabilirsiniz

Editör - + Tüm aşağıda başkalarının mesajları düzenleyebilirsiniz

Yazar - ait mesajları düzenleyebilir, mesaj yazabilir

Admin: tüm haklara sahip bir

Author: (blog sahibi bir blog yazarı gibi), belirli bir içeriğe tüm haklara sahip biri aynı zamanda içeriği görüntülemek / işbirliği için kullanıcıları davet / eklemek için izinlere sahiptir

Collaborator: yazar haklarını vermiş olduğu, daha çok ortak çalışan eklemek / içeriğini silebilir veya davet edemez içerik ekleyebilir / düzenleyebilir bir

Viewer: yazar görüntülemek için davet ettiyse içeriğini görüntüleyebilir, bir

Editors: / düzenleme her türlü içeriği onaylayabilir bir

Eğer gelişmiş kullanıcılar / geliştiriciler CMS kullanmayı düşünüyorsanız ince taneli kontrole sahip kötü bir fikir değildir. Ama acemi CMS yöneticileri için, temel rolleri sistem çok daha kullanışlı hale.