nocobase/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

6.1 KiB
Raw Blame History

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: Actiona 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.

import { ACL } from '@nocobase/database';

const acl = new ACL();

define()

Bir ACL rolü tanımlayın

Kullanım

  • define(options: DefineOptions): ACLRole

Tip

interface DefineOptions {
  role: string;
  allowConfigure?: boolean;
  strategy?: string | AvailableStrategyOptions;
  actions?: ResourceActionsOptions;
  routes?: any;
}

Detaylar

  • role - 角色名称
// 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().
  • 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.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

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

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

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.
      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.
      // Kullanıcı kimliği 1 olduğunda, user:list'e erişebilirsiniz.
      acl.allow('users', 'list', (ctx) => {
        return ctx.state.user?.id === 1;
      });
      

Örnek

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

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, ACLde 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