> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flextell.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Roller & İzinler

> Kullanıcının aktif tenant'taki rollerini ve izinlerini /account/roles endpoint'i ile öğrenin.

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

<CodeGroup>
  ```bash cURL theme={null}
  curl --request GET \
    --url https://dev.flextell.ai/api/v1/account/roles \
    --header "Authorization: Bearer $TOKEN" \
    --header "X-Tenant: 12"
  ```
</CodeGroup>

Yanıt:

```json theme={null}
{
  "success": true,
  "data": {
    "roles": ["admin"],
    "permissions": [
      "appointments.view",
      "appointments.create",
      "customers.view",
      "customers.edit",
      "conversations.reply"
    ]
  }
}
```

<ResponseField name="roles" type="string[]">
  Kullanıcının seçili tenant'ta sahip olduğu rol isimleri. Roller tenant yöneticisi tarafından özelleştirilebilir.
</ResponseField>

<ResponseField name="permissions" type="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.
</ResponseField>

## 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:

```js theme={null}
const { permissions } = await fetchRolesAndPermissions();

if (permissions.includes("appointments.create")) {
  showNewAppointmentButton();
}
```

<Warning>
  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.
</Warning>

## 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.
