# Erişim Kontrol Listesi Rol

Erişim Kontrol Listesi Rolü, Erişim Kontrol Listesi sistemindeki kullanıcı rolü sınıfıdır. Erişim Kontrol Listesi sisteminde roller genellikle 'acl.define' kullanılarak tanımlanır.

## Sınıf yönetimi

### `constructor()`
Yapıcı metod

**Kullanım**
* `constructor(public acl: ACL, public name: string)`

**Detaylar**
* acl - ACL Örnek
* name - Rol adı

### `grantAction()`

Role İşlemler izni ver

**Kullanım**
* `grantAction(path: string, options?: RoleActionParams)`

**Tip**
```typescript
interface RoleActionParams {
  fields?: string[];
  filter?: any;
  own?: boolean;
  whitelist?: string[];
  blacklist?: string[];
  [key: string]: any;
}
```

**Detaylar**

* yol - kaynak Eylem yolu. Örneğin "gönderiler" kaynağının "düzenle" Eylemini temsil eden, kaynak adı ile Eylem arasında bir ":" iki nokta üst üste işaretiyle ayrılır. "gönderiler:düzenle" gibi.

RoleActionParams yetkilendirme olduğunda daha ayrıntılı izin kontrolü elde etmek için ilgili eylemin yapılandırılabilir parametreleri kullanılır.

* fields - erişilebilir alanlar
  ```typescript
  acl.define({
    role: 'admin',
    actions: {
      'posts:view': {
        // yönetici kullanıcılar gönderiler talep edebilir: işlemi görüntüleme, ancak yalnızca alanlar tarafından yapılandırılmış alan izinlerine sahip olma
        fields: ["id", "title", "content"], 
      },
    },
  });
  ```
* filter - İzin kaynağı filtreleme yapılandırması
  ```typescript
  acl.define({
    role: 'admin',
    actions: {
      'posts:view': {
        // Yönetici kullanıcı posts:view eylemini talep edebilir, ancak listelenen sonuçların filtre tarafından belirlenen koşulları karşılaması gerekir.
        filter: {
          createdById: '{{ ctx.state.currentUser.id }}', // Şablon sözdizimini destekleyen izin değerlendirildiğinde değiştirilecek olan değeri ctx cinsinden alabilirsiniz.
        },
      },
    },
  });
  ```
* Kendi - Yalnızca kendi verilerinize erişip erişemeyeceğinizi
  ```typescript
  const actionsWithOwn = {
    'posts:view': {
      "own": true // 
     }
  }
  
  // Eşittir
  const actionsWithFilter =  {
    'posts:view': {
      "filter": {
        "createdById": "{{ ctx.state.currentUser.id }}"
      }
    }
  }
  ```
* beyaz liste - beyaz liste, yalnızca beyaz listedeki alanlara erişilebilir
* kara liste - kara liste, kara listedeki alanlara erişilemez