Cevaplar
-
Benzer bir işlemi bir windows uygulamasında yapıyorum ben. En iyi çözüm ayrı tablo. Şöyle birşey:
UserId | ModuleA | ModuleB| ... |ModuleN 1 | 1 | 0| ... | 0
Bu biraz daha açık oluyor, eğer çok sık modül eklenmeyecekse tabii... -
Ayrı bir user_perms tablosu yaratmak daha doğru bir yaklaşım olur...
Gelecekte farklı düşünceler için'de bu açılan dosya'ya gerekli alanlar açılarak
kullanım'da daha geniş boyutlu olanak sağlanır... -
Benim kullandigim yapida moduler yetki degil grup ve altgrup bazli yetki veriyorum yani moduler yapida olan tekil yetki kavramini sinirsiz boyuta cikariyorum.
su sekilde :
modulTanim (Modul tanimlari tablosu)
ID | Aciklama | modulKodu | tip
1 | Sipariş | 1 | 1
2 | Sipariş İşlem | 1.2 | 2
3 | Ürün | 3 | 1
4 | Ürün İşlem | 3.4 | 2
bu bolumu istedigimiz sekilde cogaltabiliriz.
mesela tip bir menu de olacak basliklar. Bu basliklarada yetki vererek gorunup gorunmemesini saglayabiliriz. Tip 2 ise sayfa icerisindeki yetkiler burda ise sayfaya giris yapildiginda yetkileri suzerek yapip yapmamasini saglayabiliriz.
roller tablosu
kul. grup kodu | modulKodu | Yetki (1-Gorme, 2-Silme, 3-duzeltme.....)
A (Admin) | 1 | 1 => burda admin menudeki siparisler linkini gorur
U (User) | 1 | 1 => burda user menudeki siparisler linkini gorur
A (Admin) | 1.2 | 2.3 => burda admin siparisde siler ve duzeltir
U (User) | 1.2 | 3 => burda user siparisde sadece duzeltir.
burda da baglantili sorgu yaparak isini gorebilirsin.
Aslinda gruplar icinde bir tablo olusturman mantikli. Onuda rollere baglarsan sinirsiz sayida islem yapabilecegin ve adminin yonetebilecegi bir sistem yazmis olursun.
umarim anlatabilmisimdir isim oldugundan acele yazdim biraz.. -
user_id | permission
şeklinde bir tabloda, izinleri bir dizi şeklinde array('ModuleA','ModuleB',..) şeklinde oluşturabilirsin ve yukarıdaki tabloda onu serialize bir biçimde tutarsın, kullanıcı giriş yaptığında bu bölümü unserialize ederek kullanabilirsin hatta bu diziyi cache leyip daha da performanslı çalıştırabilirsin.