Yetkilendirme sistemi (permissions)
beyler projem için yardımınıza ihtiyacım var yetkilendirme sistemi için fikir mantık verirseniz çok sevinirim.
istediğim şu kişiye ait yetkiler olacak gruplamalarda olabilir:
------ Görüntüleme, Düzenleme, Ekleme, Silme ------
örneğin toplantı sekmesini ve toplantıları herkes görücek ama bazı kişiler toplantı oluşturup silebilicek aynı şekilde birsürü menüm olduğunu düşünün ve artmayada devam edicek
şimdi böyle bir yapıyı nasıl kurabilirim veri tabanım nasıl olmalı nasıl bir yol izlemeliyim algoritmayı kafamda bitürlü kuramıyom yardımcı olursanız sevinirim.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (5)
Gerisi sende :D
<?php
<form method="POST" >
<label><input class='permission' type="checkbox" name="yetki[ayar]" value="1" /> YETKİ ADI</label>
<label><input class='permission' type="checkbox" name="yetki[menu]" value="1" /> YETKİ ADI</small></label>
<label><input class='permission' type="checkbox" name="yetki[kullanici]" value="1" /> YETKİ ADI</small></label>
<button type="submit" class="btn btn-block btn-primary">
<i class="fa fa-check"></i> Kaydet
</button>
</form>
<?php
$active = [];
foreach ($_POST["yetki"] as $key => $value) {
array_push($active, $key);
}
if($_POST){
$implode = implode("~", $active);
$yetkilendir=$db->prepare("INSERT INTO tablon SET
yetki=:yetki
");
$insert=$yetkilendir->execute(array(
'yetki' => $implode
));
if ($insert) {
header("Location:yetki.php?durum=ok");
}else{
header("Location:yetki.php?durum=no");
}
}
Sayfa Kontrolu İçinde:
if (!strstr($yetkicek['yetki'], 'yetkiadi')) {
header("location: index.php");
exit;
}
?>
Önce ne tür işlemler olacak onları belirle kafanda :)
1 : (status 1 olan)
Görüntüleme
2 : (status 2 olan)
Görüntüleme
Güncelleme(yazma)
3 : (status 3 olan)
Admin
Görüntüleme
Güüncelleme
Yazma
Yeni üye onaylama vs.
UserId----Status----Name-------Onay
1---------1---------Mehmet-----0
2---------1---------Ayşe-------1
3---------2---------Kemal------0
Onay 1 ise kullanıcı Admin tarafından onaylanmıştır. vs.
Sonra işlem yaptıracağın butonları vs. nerelerde kullanman gerekiyorsa
<?php
if($_SESSION["user_status"] == 3){
echo'<button>Sil</button>';
}
?>
Yapman geren birşey daha var. (üsttekinden daha önemli)
db_delete.php
session_start();
$sessionstatus = (int) $_SESSION["user_status"];
if(isset($sessionstatus) && $sessionstatus === 3 && mb_strlen($sessionstatus, 'UTF-8') == 3)){
}else{
header('location:index.php');
exit;
}
bonus :
Eğer daha güvenlik isitiyorsan :
htaccesss dosyandan bu sayfaların olduğu dizine sadece belli ip adresinden giriş yapılmasını sağlayabilirsin.
Benim yetki sistemim şu sekilde, bir fonksiyonum var yetki adında parametre alıyor. Ardından fonksiyon session da üye id ye bakarak üyenin yetki sütununda fonksiyona giren yetki var mı yok mu diye bakıyor.
Yetkileri her uyenin kendi yetki sütununda json formatta tutuyorum. Bu sayede dilediğim kadar yetki verebiliyorum.
Yapılacak bir işlemden önce fonksiyonum ile üyenin buna yetkisi var mı diye bakıyorum.
Örnek vermek gerekirse; Blog Sil adında yetkim olsun üyeye bu yetkiyi vermiş olayım. Blog silme sayfasında en dıştaki if sarmalında üyenin yetkisi yoksa bu işlemi yapmasını engelliyorum.
dostum benim fikrim var bu konu da algoritma mantığı konusunda dc de eklersen konuşuruz istersen
dc Hakan Korkmaz#0670