Her kullanıcı çalışıyorum uygulamasında, örneğin gruplardan bir veya daha fazla ait olabilir 'Misafir', 'üye', 'admin', vb
Kullanıcı modelini değiştiren eylemi, örneğin uyguladığında vs, hesap kayıt birinin mesajını düzenlerken, ben kullanıcı bunu yapmak için izin olup olmadığını doğrulamak gerekir.
Sırayla Actions çalıştırmak için izin bir sahibi (veya konu) sahip olabilir. Örneğin, kayıt ve giriş eylemler konu guest
, çıkış konu olan member
, düzenleme sonrası eylem tabidir (açmış üye anlam) owner
.
Right now I do it a la Apache allow,deny rules: - each method has a list of user roles that are allowed to use it - each of these roles has 3 attributes:
order
("izin inkar" "izin, inkar" ya)
allow
- konunun rolleri (kim mevcut kullanıcıdan farklı olabilir) listesi ile, örneğin, sahibi, misafir, üye, yönetici, vs, bunu kullanmak için izin verilir
deny
- Bunu kullanmak için izin verilmez yukarıdaki gibi aynı, fakat konu rolleri
Fonksiyon isAllowed
Bu mantığı vardır:
Geçerli kullanıcı ve konunun gruplar alır.
Geçerli kullanıcı ID = tabi kullanıcı kimliği varsa, geçerli kullanıcı ve konunun hem gruplara 'sahibi' ekler.
Geçerli kullanıcının gruplardan hiçbiri yöntemin kullanıcı rolleri yer varsa, işlev false döndürür.
Else işlev kişinin grupları izin verme veya reddetme listeleri olup olmadığını kontrol etmek için gider ve sipariş (izin / inkar) mantığı geçerlidir.
1'den fazla sonuç (örneğin, konu kullanıcı üye ve yönetici hem de) varsa, ben itaat mantığı uygulamak (Her rolün önemi sayısal değere sahip olduğu, bu yüzden yönetici olmanın daha önemli bir konum olduğunu biliyorum ki düzenli bir üyesi olmak) ve en önemli rolü için (izin verme veya reddetme) sonuç almak.
Bu mantıklı mı? Ne değiştirmek gerekir?