tachybase_todo/docs/tr-TR/api/acl/acl.md
altaytahsin ad4929e48b
Turkish language created for Docs. Belgeler için türkçe dil desteği (#1071)
* Turkish language created for Docs. Belgeler için türkçe dil desteği oluşturuldu.

* Turkish docs fix
2022-12-23 09:42:44 +08:00

233 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Erişim Kontrol Listesi
Erişim Kontrol Listesi, Nocobase'deki izin kontrol modülüdür. Erişim Kontrol Listesinde rolleri, kaynakları kaydettikten ve karşılık gelen izinleri yapılandırdıktan sonra, rollerin izinlerini değerlendirebilirsiniz.
## Kavram Açıklaması
* rol (`ACLRole`): izin kararının nesnesi
* Kaynak (`ACLResource`): Nocobase Erişim Kontrol Listesinde, kaynak genellikle Restful API'deki Resource'a kavramsal olarak benzer olabilen bir veritabanı tablosuna karşılık gelir.
* İşlem: "Oluştur", "oku", "güncelle", "sil" vb. gibi kaynaklar üzerindeki işlemler.
* Strateji (`ACLAvailableStrategy`): Genellikle her rolün varsayılan kullanıcı izinlerini tanımlayan kendi izin stratejisi vardır.
* Grant: `Action`a rol erişimi vermek için `ACLRole` örneğinde `grantAction` işlevini çağırın.
* Kimlik Doğrulama: `ACL` örneğinde `can` işlevi çağrılır ve işlev tarafından döndürülen sonuç, kullanıcının kimlik doğrulama sonucudur.
## sınıf yöntemi
### `constructor()`
Bir `ACL` örneği oluşturan oluşturucu.
```typescript
import { ACL } from '@nocobase/database';
const acl = new ACL();
```
### `define()`
Bir ACL rolü tanımlayın
**Kullanım**
* `define(options: DefineOptions): ACLRole`
**Tip**
```typescript
interface DefineOptions {
role: string;
allowConfigure?: boolean;
strategy?: string | AvailableStrategyOptions;
actions?: ResourceActionsOptions;
routes?: any;
}
```
**Detaylar**
* `role` - 角色名称
```typescript
// Yönetici adında bir rol tanımlayın
acl.define({
role: 'admin',
});
```
* `allowConfigure` - Yapılandırma izinlerine izin verilip verilmeyeceği
* `strategy` - Rol İzin Politikası
* Tanımlanan stratejinin kullanılacağını belirten, kullanılacak stratejinin adı olan bir `string` olabilir.
* `AvailableStrategyOptions` için bu rol için yeni bir strateji tanımlanabilir, bkz. [`setAvailableActions()`](#setavailableactions).
* `işlemler` - Bir rol tanımlarken, rol için erişilebilir bir `işlemler` nesnesi iletebilirsiniz.
Bundan sonra, kaynak izinlerini vermek için sırayla `aclRole.grantAction` çağrılır. Bkz. [`aclRole.grantAction`](./acl-role.md#grantaction)
```typescript
acl.define({
role: 'admin',
actions: {
'posts:edit': {}
},
});
// Diğer kullanım şekli
const role = acl.define({
role: 'admin',
});
role.grantAction('posts:edit', {});
```
### `getRole()`
Rol adına göre kayıtlı rol nesnesini döndürür
**Kullanım**
* `getRole(name: string): ACLRole`
### `removeRole()`
Rol adına göre rolleri kaldırın
**Kullanım**
* `removeRole(name: string)`
### `can()`
Kimlik doğrulama işlevi
**Kullanım**
* `can(options: CanArgs): CanResult | null`
**Tip**
```typescript
interface CanArgs {
role: string; // Rol ismi
resource: string; // Kaynak Adı
action: string; // İşlem adı
}
interface CanResult {
role: string; // Rol ismi
resource: string; // Kaynak Adı
action: string; // İşlem adı
params?: any; // İzinler kaydedilirken gönderilen parametreler
}
```
**Detaylar**
`can` yöntemi öncelikle rolün kayıt için ilgili `Action` iznine sahip olup olmadığını belirleyecek ve değilse, rolün `strategy` eşleşip eşleşmediğini belirleyecektir.
Çağrı `null` döndürdüğünde, rolün izni olmadığını belirtir, aksi takdirde, rolün izne sahip olduğunu belirten bir `CanResult` nesnesi döndürür.
**Örnek**
```typescript
// Rolleri tanımlayın, izinleri kaydedin
acl.define({
role: 'admin',
actions: {
'posts:edit': {
fields: ['title', 'content'],
},
},
});
const canResult = acl.can({
role: 'admin',
resource: 'posts',
action: 'edit',
});
/**
* canResult = {
* role: 'admin',
* resource: 'posts',
* action: 'edit',
* params: {
* fields: ['title', 'content'],
* }
* }
*/
acl.can({
role: 'admin',
resource: 'posts',
action: 'destroy',
}); // null
```
### `use()`
**Kullanım**
* `use(fn: any)`
Ara katman yazılımlarına ara katman işlevleri ekleyin.
### `middleware()`
`@nocobase/server` içinde kullanım için bir ara katman işlevi döndürür. Bu `ara yazılımı` kullandıktan sonra, `@nocobase/server`, her istek işlenmeden önce izin kararı verecektir.
### `allow()`
Kaynağı herkese açık hale getirin
**Kullanım**
* `allow(resourceName: string, actionNames: string[] | string, condition?: string | ConditionFunc)`
**Tip**
```typescript
type ConditionFunc = (ctx: any) => Promise<boolean> | boolean;
```
**Detaylar**
* resourceName - Kaynak Adı
* actionNames - kaynak işlem adı
* condition? - Konfigürasyon Etkili Koşullar
* `string` iletmek, tanımlanan koşulun kullanıldığını ve kayıt koşulunun `acl.allowManager.registerCondition` yöntemini kullandığını gösterir.
```typescript
acl.allowManager.registerAllowCondition('superUser', async () => {
return ctx.state.user?.id === 1;
});
// superUser durumu için users:list yetkilerini açar
acl.allow('users', 'list', 'superUser');
```
* ConditionFunc'u ctx parametresiyle iletir ve sonucunu `boolean` olarak döndürür.
```typescript
// Kullanıcı kimliği 1 olduğunda, user:list'e erişebilirsiniz.
acl.allow('users', 'list', (ctx) => {
return ctx.state.user?.id === 1;
});
```
**Örnek**
```typescript
// users:login erişim yetkisi olanlar erişebilir.
acl.allow('users', 'login');
```
### `setAvailableActions()`
**Kullanım**
* `setAvailableStrategy(name: string, options: AvailableStrategyOptions)`
Kullanılabilir bir izin politikası kaydedin
**Tip**
```typescript
interface AvailableStrategyOptions {
displayName?: string;
actions?: false | string | string[];
allowConfigure?: boolean;
resource?: '*';
}
```
**Detaylar**
* displayName - Politika Adı
* allowConfigure - Bu politikanın **config source** izni olup olmadığına bakılmaksızın, bunu `true` olarak ayarladıktan sonra, `ACL`de bir `configResources` kaynağı olarak kaydolma iznini belirleme isteği bir geçiş döndürür.
* actions - Politika içindeki işlemler listesi joker karakteri `*` destekler
* resource - Politika içindeki kaynak tanımı joker karakteri `*` destekler