Skip to main content
Flextell’de roller ve izinler tenant bazlıdır. Aynı kullanıcı bir klinikte Yönetici, başka klinikte Resepsiyonist olabilir. Bu bilgiye, kullanıcının UI’da neyi görüp görmeyeceğine karar vermek için erişirsiniz.

Aktif tenant’taki rolleri alma

curl --request GET \
  --url https://dev.flextell.ai/api/v1/account/roles \
  --header "Authorization: Bearer $TOKEN" \
  --header "X-Tenant: 12"
Yanıt:
{
  "success": true,
  "data": {
    "roles": ["admin"],
    "permissions": [
      "appointments.view",
      "appointments.create",
      "customers.view",
      "customers.edit",
      "conversations.reply"
    ]
  }
}
roles
string[]
Kullanıcının seçili tenant’ta sahip olduğu rol isimleri. Roller tenant yöneticisi tarafından özelleştirilebilir.
permissions
string[]
Kullanıcının rolleri üzerinden kazandığı tüm izin isimlerinin düzleştirilmiş listesi. UI seviyesinde erişim kontrolü için kullanın.

UI seviyesinde yetki kontrolü

API zaten backend’de yetki denetimi yapar. Yine de iyi bir kullanıcı deneyimi için, kullanıcının yapamayacağı işlemleri UI’da gizlemeniz veya devre dışı bırakmanız önerilir:
const { permissions } = await fetchRolesAndPermissions();

if (permissions.includes("appointments.create")) {
  showNewAppointmentButton();
}
UI seviyesindeki kontroller güvenlik sınırı değildir. Kullanıcı tarayıcı geliştirici araçlarıyla butonları yeniden açabilir. Asıl kontrol API’ye bırakılır; oraya yetkisiz istek giderse 403 dönülür.

Scope vs. permission farkı

Kolay karıştırılan iki kavramdır: Scope — Uygulamanıza kullanıcı tarafından OAuth akışında verilen izinler. Örn. customers:read. Uygulama genelindedir, kullanıcıya ait değildir. Permission — Kullanıcının aktif tenant’taki rolü üzerinden sahip olduğu iç sistem izinleri. Örn. customers.view. Tenant yöneticisinin tanımladığı roller tarafından yönetilir. Bir endpoint’in çalışması için her ikisinin de sağlanması gerekir:
  1. Token’ın ilgili scope’a sahip olması (örn. customers:read)
  2. Kullanıcının aktif tenant’taki rolünün ilgili permission’a sahip olması (örn. customers.view)
Birisi eksikse 403 Forbidden alırsınız.

Role önbelleğe alma

Rol ve izin listesini tenant seçimi başına bir kez çekip saklayabilirsiniz. Ancak:
  • Kullanıcı aktif tenant’ı değiştirdiğinde tekrar çağırın.
  • Kullanıcı uzun süredir açık bir oturumda ise (ör. gün başında) tekrar çağırın — yönetici rollerini değiştirmiş olabilir.
  • 403 yanıtı aldığınızda rolleri yeniden çekin; o araya rol değişmiş olabilir.