Personel Hesapları
Panele giren personel hesaplarını açan, güncelleyen ve kaldıran altı uç.
Genel Bakış
Personel hesapları panele girebilen kişilerdir; müşterilerden ayrı bir kayıt kümesinde yaşarlar ama e-posta adresleri müşterilerle aynı havuzu paylaşır.
Bir hesabın ne yapabileceğini yetki grubu belirler; hangi destek taleplerini göreceğini ise atandığı departmanlar. İkisi de ayrı uçlardan yönetilir.
Kurulumun kurucu hesabı korumalıdır: silinemez ve yetkisi değiştirilemez. Kendi hesabınız da kısmen korumalıdır; kendi yetkinizi düşüremez ve kendinizi silemezsiniz.
Referans
Personeli Listeleme
Panele giriş yapabilen hesapları döndürür.
curl 'https://panel.ornek.com/api/v1/admin/admins' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/admins', {
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/admins');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Kurucu hesap ayri isaretlenir; toplu islem yazarken onu disarida birakin.
$staff = Api::Admins()->GetStaff()['data'];
$rest = array_filter($staff, fn ($s) => ! $s['is_root']);Personel Hesabı Açma
Panele girebilecek yeni bir hesap açar.
curl -X POST 'https://panel.ornek.com/api/v1/admin/admins' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"full_name":"Ayse Yilmaz","email":"[email protected]","password":"G1zliParola","password_confirmation":"G1zliParola","privilege":2,"lang":"tr"}'const res = await fetch('https://panel.ornek.com/api/v1/admin/admins', {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
full_name: 'John Doe',
email: '[email protected]',
password: secret,
password_confirmation: secret,
privilege: 2,
lang: 'en',
departments: [1, 2],
}),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/admins');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'full_name' => 'John Doe',
'email' => '[email protected]',
'password' => $secret,
'password_confirmation' => $secret,
'privilege' => 2,
'lang' => 'en',
]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Yetki grubu hesabin NE YAPABILECEGINI belirler; en genis grubu varsayilan yapmayin.
Api::Admins()->CreateStaff([
'full_name' => 'John Doe',
'email' => $email,
'password' => $secret,
'password_confirmation' => $secret,
'privilege' => $limitedGroupId,
'lang' => 'en',
]);Personel Detayı
Tek bir personel hesabını bütün alanlarıyla döndürür.
curl 'https://panel.ornek.com/api/v1/admin/admins/5' \
-H "Authorization: Bearer $API_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/admin/admins/${id}`, {
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/admins/' . $id);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Parola HICBIR KOSULDA donmez; dogrulama tarafinda da yalniz yontem ADLARI gorunur.
$s = Api::Admins()->GetStaffMember(['id' => $id])['data'];Personeli Güncelleme
Personel hesabının gönderdiğiniz alanlarını değiştirir.
curl -X PATCH 'https://panel.ornek.com/api/v1/admin/admins/5' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"full_name":"Ayse Kaya","departments":[1,3]}'const res = await fetch(`https://panel.ornek.com/api/v1/admin/admins/${id}`, {
method: 'PATCH',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ full_name: 'Jane Doe', departments: [1, 3] }),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/admins/' . $id);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['full_name' => 'Jane Doe', 'departments' => [1, 3]]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Departman listesi gonderilirse YERINE GECER; korumak istiyorsaniz alani hic gondermeyin.
Api::Admins()->UpdateStaff(['id' => $id, 'full_name' => 'Jane Doe']);Personeli Silme
Personel hesabını kaldırır.
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/admins/6' \
-H "Authorization: Bearer $API_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/admin/admins/${id}`, {
method: 'DELETE',
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/admins/' . $id);
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);// Ayrilan personelde silmek yerine hesabi KAPATIN: gecmis islemlerin sahibi kayitli kalir.
Api::Admins()->UpdateStaff(['id' => $id, 'status' => 'passive']);İkinci Adımı Kapatma
Personelin girişteki ikinci doğrulama adımını kaldırır. Açık oturumları kapanır ve güvenilen cihazları silinir.
curl -X POST 'https://panel.ornek.com/api/v1/admin/admins/5/disable-authentication' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"method":"Totp"}'const res = await fetch(`https://panel.ornek.com/api/v1/admin/admins/${id}/disable-authentication`, {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ method: 'Totp' }),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/admins/' . $id . '/disable-authentication');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['method' => 'Totp']),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Panelde bu islem YONETICI PAROLASI ister; API'de tek kapi anahtarin kapsamidir.
$s = Api::Admins()->GetStaffMember(['id' => $id])['data'];
foreach ($s['authentication_methods'] as $m)
Api::Admins()->DisableStaffAuthentication(['id' => $id, 'method' => $m]);Tuzaklar
Bir personel hesabının e-postası yalnız diğer personel arasında değil, müşteriler arasında da benzersiz olmalıdır. Aynı adresle hem müşteri hem personel hesabı açılamaz. Kendi ekibini müşteri olarak da kaydeden bir kurulumda bu, beklenmedik bir çakışma hatası olarak karşınıza çıkar.
Güncelleme çağrısı, kurucu hesapta ve kendi hesabınızda yetki grubu ile durum alanlarını sessizce yok sayar. Yani kendinizi yanlışlıkla kilitleyemezsiniz, ama gönderdiğiniz değerin uygulandığını da varsayamazsınız. Yanıttaki yetki grubunu okuyup beklediğinizle karşılaştırın.
Güncellemede departman listesi gönderirseniz mevcut atamaların yerine geçer. Bir departman eklemek isterken yalnız onu göndermek diğerlerini düşürür. Mevcut atamaları korumak istiyorsanız alanı hiç göndermeyin; eklemek istiyorsanız önce detayı okuyup birleştirin.
Panelde bir personelin ikinci doğrulama adımını kapatmak yönetici parolası ister; bu uçta tek kapı anahtarın kapsamıdır. Yani bu kapsamı taşıyan bir anahtar, bir hesabın ek korumasını doğrudan kaldırabilir. Anahtarları dağıtırken bu kapsamı ayrı değerlendirin.
Bir personeli silmek hesabı ortadan kaldırır; oysa yaptığı işlemler, yazdığı yanıtlar ve düştüğü notlar kayıtlarda ona işaret etmeye devam eder. Hesabı kapatmak girişi engeller ve geçmişi okunur bırakır. Kurucu hesap ve kendi hesabınız zaten silinemez.
İlgili Makaleler
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.