Personel Yetki Grupları

1.6k görüntülenme Markdown

Personelin panelde neyi yapabileceğini belirleyen altı uç.

Genel Bakış

Yetki grubu, bir personelin panelde neyi görebileceğini ve neyi değiştirebileceğini belirler. Her personel bir gruba bağlıdır ve grubun taşıdığı yetkiler onun yetkileridir.

Verilebilecek yetkilerin tam listesi ayrı bir uçtan gelir. Bu katalog kuruluma göre değişir: kurulu modüller kendi yetkilerini ekler ve bazıları ülkeye bağlıdır.

Kurulumun kurucu grubu korumalıdır: silinemez ve yetki yönetimi hakkını kaybedemez. Bu, kimsenin kendini yetki veremez duruma düşürmemesi içindir.

Referans

Yetki Kataloğunu Getirme

get/api/v1/admin/admins/privilege-keys
Admins/GetPrivilegeKeys admin

Bir gruba verilebilecek bütün yetkileri gruplanmış hâlde döndürür.

Dönen alanlar data[] — 4 + meta
groupstringYetki grubunun anahtarı.
group_labelstringGrubun okunur adı. Panelin geçerli dilinde gelir.
singleboolGrubun tek bir yetkiden mi oluştuğu. Doğruysa grup adı ile yetki adı aynı şeyi anlatır.
permissionsobject[]Gruptaki yetkiler: her birinin anahtarı ve okunur adı.
totalintToplam grup sayısı. Meta altında döner.
Hatalar 1
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/admins/privilege-keys' \
  -H "Authorization: Bearer $API_KEY"
const res  = await fetch('https://panel.ornek.com/api/v1/admin/admins/privilege-keys', {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const { data } = await res.json();

const keys = data.flatMap((g) => g.permissions.map((p) => p.key));
$ch = curl_init('https://panel.ornek.com/api/v1/admin/admins/privilege-keys');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Katalog KURULUMA gore degisir: modullerin actigi yetkiler ve ulkeye bagli olanlar eklenir.
$groups = Api::Admins()->GetPrivilegeKeys()['data'];

Grupları Listeleme

get/api/v1/admin/admins/privileges
Admins/GetPrivileges admin

Tanımlı yetki gruplarını ve içlerindeki personeli döndürür.

Sorgu 3
pageintKaçıncı sayfa.
limitintSayfa başına kayıt.
searchstringGrup adında arar.
Dönen alanlar data[] — 5 + meta — 4
idintGrubun numarası.
namestringGrubun adı.
permission_countintGruptaki yetki sayısı.
appointeesobject[]Bu gruptaki personel: numarası ve adı.
is_rootboolKurulumun kurucu grubu mu. Bu grup silinemez.
totalintToplam grup. Meta altında döner.
pageintBulunulan sayfa.
limitintSayfa boyutu.
next_pageintSonraki sayfa.
Hatalar 1
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/admins/privileges' \
  -H "Authorization: Bearer $API_KEY"
const res  = await fetch('https://panel.ornek.com/api/v1/admin/admins/privileges', {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/admins/privileges');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Liste yetki ADLARINI degil SAYISINI verir; hangi yetkiler oldugunu detaydan okuyun.
$groups = Api::Admins()->GetPrivileges()['data'];

Grup Oluşturma

post/api/v1/admin/admins/privileges
Admins/CreatePrivilege admin

Yeni bir yetki grubu tanımlar.

Gövde 2
namestringreqGrubun adı.
permissionsstring[]Gruba verilecek yetki anahtarları. Geçerli anahtarlar katalog ucundan alınır.
Dönen alanlar 201 — data — 4
dataobjectOluşan grup. Detay ucuyla aynı şekildedir.
Hatalar 5
name_required422Grup adı boş.
permissions_exceed_holder422Grup, anahtarınızın arkasındaki hesabın sahip olmadığı izinleri verecekti. Kök yetki grubuna ait bir anahtar sınırlanmaz.
create_failed422Grup oluşturulamadı.
blocked_by_gate422Bir kanca kaydı reddetti.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X POST 'https://panel.ornek.com/api/v1/admin/admins/privileges' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"name":"Destek Ekibi","permissions":["TICKETS"]}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/admins/privileges', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    name: 'Support Team',
    permissions: ['ADMIN_CONFIGURE', 'TICKETS'],
  }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/admins/privileges');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'name'        => 'Support Team',
        'permissions' => ['ADMIN_CONFIGURE', 'TICKETS'],
    ]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Yetkisiz bir grup gecerlidir: grup olusur ama uyeleri panelde hicbir sey goremez.
Api::Admins()->CreatePrivilege([
    'name'        => 'Support Team',
    'permissions' => ['TICKETS'],
]);

Grup Detayı

get/api/v1/admin/admins/privileges/{pid}
Admins/GetPrivilege admin

Tek bir yetki grubunu taşıdığı yetkilerle döndürür.

Dönen alanlar data — 4
idintGrubun numarası.
namestringGrubun adı.
permissionsstring[]Gruptaki yetki anahtarları.
is_rootboolKurulumun kurucu grubu mu.
Hatalar 2
not_found404Yetki grubu bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/admins/privileges/1' \
  -H "Authorization: Bearer $API_KEY"
const res  = await fetch(`https://panel.ornek.com/api/v1/admin/admins/privileges/${pid}`, {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/admins/privileges/' . $pid);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Yetki eklemeden ONCE burayi okuyun: yazma cagrisi listeyi ekler degil DEGISTIRIR.
$g = Api::Admins()->GetPrivilege(['pid' => $pid])['data'];

Grubu Güncelleme

patch/api/v1/admin/admins/privileges/{pid}
Admins/UpdatePrivilege admin liste yerine geçer

Yetki grubunun adını ve taşıdığı yetkileri değiştirir.

Gövde 2
namestringGrubun adı.
permissionsstring[]Gruptaki yetkilerin tamamı. Gönderdiğiniz liste eskisinin yerine geçer.
Dönen alanlar data — 4
dataobjectGüncel grup. Detay ucuyla aynı şekildedir.
Hatalar 7
not_found404Yetki grubu bulunamadı.
name_required422Grup adı boş.
root_needs_privileges422Kurucu grup yetki yönetimini kaybedemez.
permissions_exceed_holder422Grup, anahtarınızın arkasındaki hesabın sahip olmadığı izinleri verecekti. Kök yetki grubuna ait bir anahtar sınırlanmaz.
save_failed422Grup kaydedilemedi.
blocked_by_gate422Bir kanca kaydı reddetti.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PATCH 'https://panel.ornek.com/api/v1/admin/admins/privileges/3' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"permissions":["TICKETS","SERVICES"]}'
const res = await fetch(`https://panel.ornek.com/api/v1/admin/admins/privileges/${pid}`, {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    permissions: ['ADMIN_CONFIGURE', 'TICKETS', 'SERVICES'],
  }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/admins/privileges/' . $pid);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PATCH',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(['permissions' => ['TICKETS', 'SERVICES']]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Tek yetki eklemek icin MEVCUT listeyi okuyup uzerine ekleyin; yoksa digerleri duser.
$g = Api::Admins()->GetPrivilege(['pid' => $pid])['data'];
$g['permissions'][] = 'SERVICES';

Api::Admins()->UpdatePrivilege(['pid' => $pid, 'permissions' => $g['permissions']]);

Grubu Silme

delete/api/v1/admin/admins/privileges/{pid}
Admins/DeletePrivilege admin

Yetki grubunu kaldırır.

Dönen alanlar data — 2
deletedboolSilme çalıştı mı.
idintSilinen grubun numarası.
Hatalar 4
not_found404Yetki grubu bulunamadı.
root_protected422Kurucu grup silinemez.
delete_failed422Grup silinemedi.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/admins/privileges/3' \
  -H "Authorization: Bearer $API_KEY"
const res = await fetch(`https://panel.ornek.com/api/v1/admin/admins/privileges/${pid}`, {
  method: 'DELETE',
  headers: { Authorization: `Bearer ${apiKey}` },
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/admins/privileges/' . $pid);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'DELETE',
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Once ICINDEKI personeli tasiyin: gruba bagli hesaplar dayanaksiz kalabilir.
$g = current(array_filter(
    Api::Admins()->GetPrivileges()['data'], fn ($x) => $x['id'] === $pid,
));
if (! $g['appointees']) Api::Admins()->DeletePrivilege(['pid' => $pid]);

Tuzaklar

Yetki listesi eklenmez, değiştirilir

Güncellemede gönderdiğiniz yetki listesi eskisinin yerine geçer. Bir grubu genişletmek isterken yalnız yeni yetkiyi göndermek, o grubun bütün diğer yetkilerini alır ve içindeki personel bir anda panelde neredeyse hiçbir şey göremez. Önce detayı okuyup üzerine ekleyin.

Katalog kuruluma göre değişir

Yetki anahtarlarının listesi sabit değildir: kurulu modüller kendi yetkilerini ekler ve bazıları kurulumun ülkesine bağlıdır. Anahtarları koda gömen bir betik, başka bir kurulumda var olmayan bir yetkiyi vermeye çalışır. Her seferinde katalog ucundan okuyun.

Kurucu grup yetki yönetimini kaybedemez

Kurucu gruptan yetki yönetimi hakkını almak reddedilir. Bu kasıtlı bir kilittir: o hak kaybolsaydı hiçbir hesap bir daha yetki dağıtamaz ve kurulum yönetilemez hâle gelirdi. Grup silinemez de.

Grubu silmeden önce içini boşaltın

Bir yetki grubunu silmek, o gruba bağlı personeli dayanaksız bırakabilir. Liste ucu her grubun içindeki personeli adlarıyla verir; silmeden önce oraya bakıp hesapları başka bir gruba taşıyın. Boş bir grubu silmek güvenlidir.

Liste hangi yetkilerin olduğunu söylemez

Grup listesi yalnız yetki sayısını verir; hangi yetkiler olduğunu değil. İki grup aynı sayıyı taşıyıp tamamen farklı şeyler yapabilir. Bir grubun gerçekten neye izin verdiğini görmek için detay ucundan okuyun.

Faydalı oldu mu?

Geri bildiriminiz için teşekkürler!

Hâlâ Yardıma mı İhtiyacınız Var?

Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.