# Organization
Organizasyonlar guvenligin temel kaydi olup her bir scope icin bir organizasyon tanimi bulunmasi zorunludur.
Organizasyon tanimi `Location`, `Division` ve `Position` bilesenlerinden kompose edilir.
## Genis Organizayon (Kurumsal, Banka, Kredi Bayisi vs.)
* Genel Merkez(Location)
* Kurumsal Mimari(Division)
* Mimar (Position)
* Ugur (User)
* Mehmet (User)
* Plovdiv Sube(Location)
* Sube Muduru(Position)
* Hasan (User)
* Musteri Yonetimi (Division)
* Portfoy Yetkilisi (Position)
* Ahmet (User)
## Bireysel Organizayon
* Tam Yekili (Position)
* Hasan Fettah (User)
* Gozlemci (Position)
* Ayse Fettah (User)
## Kurumsal Organizayon (Simple)
* Tam Yekili (Position)
* Ali (User)
* Gozlemci (Position)
* Selma (User)
## Kurumsal Organizayon (For 4 Eyes)
* Tam Yekili (Position)
* Ali (User)
* Gozlemci (Position)
* Ayse (User)
* Girisci (Position)
* Selma (User)
* Sevda (User)
* Onayci (Position)
* Selim (User)
---
## Yetkilendirmeler.
Yetkilendirmeler Roller uzerinden yapilir.
Organizayson elementleri (scope kaydi uzerinde) ve kullanicilar (consent kaydi uzerinde) rollerle iliskilendirilebilir. Role iliskisi ayni zamanda izin veya kisit bilgisini (`Allow` `Deny`) icerir.
Yetkilendirme hiyerarsik calisir. Kullanicinin sahip oldugu ve bulundugu organizasyon hiyerarsisinde tum hiyerasi yetkilerinin birlesim kumesi alinir. Eger her hangi bir seviyede bir role icin `Deny` verilmisse, ilgili role farkli bir seviyede `Allow` edilmis olsa dahi yinede yetki kisitlandirildir.
### Roller
Her bir akis icesinde tum kulanici tipleri icin rol tanimlari yapilir.
Akis icerisinde tanimlanan Roller statik olarak gelistirme zamani tanimlanir ve akis icindeki sunulan 'transition' ve 'function' icin tanimlanir.Ayrica kayit ornegi donusunde verilerin gorunurlugu ve gizlenmesi gereken rol bazli filtreleme akisin master shemasi uzerinden yapilir.
Roller organizasyon icindeki `Location`, `Division` ve `Position` bilesenlerine ve Consent icerisidne bulunan User tanimina yapilir.
### Privilieges
Priliveges bir resource tarafina erisildiginde resource ile ilgili parametreleri sinirlandirmak veya izin vermek icin kullanilir. Ornegin bir kullanicini hesaplari gormesi role yetkilendirmesi icin yapilriken, gormesi gereken hesaplari limitleme privilives ile yapilir.
Priviliges static degerlerden olusturulebilirken, dinamik bir script olabilir. Organizasyon semasinin herhangibir bilesenine veya direkt user uzerine tanimlanabilir.
### Organization-Template
Bir scope varsayilan organizayon, role yapilarini indirmek icin kullanilacak yapi. Burada scope tipine (bireysel musteri, kurumsal musteri, coklu subeli kurumsal musteri, kredi bayisi vs.) gore varsayilan organizasyon kalibinin tanimi yonetilir.
```mermaid
erDiagram
OrganizationTemplate ||--o{ Division : divisions
OrganizationTemplate ||--o{ Position : positions
OrganizationTemplate ||--o{ Location : locations
Division ||--o{ Role : roles
Position ||--o{ Role : roles
Location ||--o{ Role : roles
```
### Scope
Bir organizatin template varsayilan tanimalari her bir scope icin, scope kaydi olusturuldugunda eklenir. Sornasinda yetkili kullanilar organizasyon agacini, ek pozisyon veya location gibi genisletmeleri scope ozelinde yapar.
Sope icerisinde organizasyon tanimlarindan gelen yetkiler disinda, scope tanimlari ozelinde farkli rollere yetkilendirilebilir veya sinirlandirlabilir.
```mermaid
erDiagram
Scope ||--o{ Division : divisions
Scope ||--o{ Position : positions
Scope ||--o{ Location : locations
Division ||--o{ Role : roles
Position ||--o{ Role : roles
Location ||--o{ Role : roles
```
### Consent
Bir kullanici bir her kosulda bir yada birden fazla pozisyon ile iliskilendirilir.
Bu iliski Consent kaydinda tutulur.
Kullanicilar pozisyonlardan gelen yetkiler disinda, consent tanimlari ozelinde farkli rollere yetkilendirilebilir veya sinirlandirlabilir.
```mermaid
erDiagram
User ||--o{ Consent : consents
Consent ||--o{ Position : positions
Consent ||--o{ Role : roles
```