v2.5.2
Giriş yap

Yetki Sistemi

samkofte
919 defa görüntülendi

Tek panel kullanarak giren kişinin yetkisini kontrol edip get değeri gönderiyorum fakat boş geldiğin de falan menüler gözükmüyor doğal olarak bu işlemi her dosya da tek tek kontrol mü ettirmem lazım veya her dosyadan get değeri mi göndermem lazım

Cevap yaz
Cevaplar (3)
ilkrkaya
1626 gün önce

Merhaba,
Kendi izlemiş olduğum yolu anlatmak isterim. Gayet basit bir yol bana göre.
Öncelikle veri tabanında bir alan oluşturuyorsun. Örnek olarak;

user_authorization
id | data
-- | --
1 | sayfa_adi1, sayfa_adi2

Tarzında bir tablo oluşturduğumuzu farz edelim. Tabii bu kadar ile kalmayacak. User tablonun içerisinde de user_authorization_id diye bir alan koyup user_authorization tablosu ile ilişkilendirmelisin.

Sonrasında bir fonksiyon yazarak bunu bütün sayfalara koymalısın.
_Not: sayfa_adi1, sayfaadi2 alanları site.com/getPar kalın olarak işaretlenen alanı belirtmektedir.

<?php
    
    function authorization($user_id, $url){
    	global $db;
    	
    	$query -> $db->query("SELECT * FROM user INNER JOIN user_authorization ON user_authorization.id = user.user_authorization_id WHERE user.user_id = ?");
    	$query->execute([$user_id]);
    	$query = $query->fetch(PDO::FETCH_ASSOC);
    	
    	$data = explode(", ", $query['data']);
    	if( in_array($url, $data) ){
    		return true;
    	}else {
    		die("Yetkisiz Erişim!"); 
    	}
    }
    

Oluşturulan bu fonksiyonu tüm sayfalarında çağırdığın header.php veya senin sisteminde ne ise onun en başına(tabi öncesinde vt bağlantısı ve fonksiyonları çağırıp) koyup authorization($_SESSION['user_id'], $_GET['par']); şeklinde çalıştıtırsan istediğine ulaşabileceğine inanıyorum.

Not: Kodları biraz da olsa baştan savma yazdım. Lütfen kullanmadan önce güvenlik kontrolünden geçir.

ta5mrg
1626 gün önce

Ben yetkiyle ilgili şöyle bir yol izlemiştim. Her sayfa yada ilem için iki harften oluşan kod tanımlamıştım. Örnek olarak Makale sayfası yetkisi için MK yorumlar sayfası için YM gibi. Daha sonra kullanıcı tablosuna bu yetki kodlarını virgül ile ayırarak yazmıştım. Her sayfada yada işlemde yetki kodunun sessionda olup olmadığına göre işlem yapıyordum.

arcface
1626 gün önce

yapılan işlem yetki sistemine tâbi ise yaptıracağın sayfa da kontrol etmen gerekiyor