defineApplicationRole() ile işaretlenmiş rolün izinlerini devralır (aşağıda Varsayılan fonksiyon rolü bölümüne bakın).
src/roles/restricted-company-role.ts
Satır düzeyi güvenlik
Nesne ve alan izinleri, bir rolün hangi nesnelere ve alanlara erişebileceğine karar verir. Satır düzeyi izin koşulları daha da ileri gider ve bir rolün hangi kayıtları görebileceğini ve bunlar üzerinde işlem yapabileceğini belirler — örneğin, her harici kullanıcının yalnızca kendi kayıtlarını gördüğü self servis bir rol gibi. RolderowLevelPermissionPredicates ile koşulları tanımlayın. Manifestin geri kalanında olduğu gibi,
her koşul kendi universalIdentifier değerini taşır ve bir nesneyi ve bir alanı onların
universalIdentifier değerleriyle belirtir; ayrıca bir operand ve (isteğe bağlı olarak) sorgu zamanında değeri enjekte edilen bir workspaceMember alanı içerir — böylece “kaydın sahibi ilişkisinin geçerli çalışma alanı üyesi olduğunu” ifade edebilirsiniz:
src/roles/partner-role.ts
Koşulları gruplarla birleştirme
Varsayılan olarak bir rolün koşullarıAND ile birleştirilir. Bunların bazılarını OR ile birleştirmek (veya
mantığı iç içe yerleştirmek) için bir rowLevelPermissionPredicateGroups girdisi bildirin ve her koşulu buna
predicateGroupUniversalIdentifier aracılığıyla yönlendirin. Bu rol, bir iş ortağının ya sahibi olduğu ya da irtibat kişisi olduğu bir Opportunity’yi görmesine izin verir:
src/roles/partner-opportunities-role.ts
- Her koşula ve gruba kararlı bir
universalIdentifier(herhangi bir uuid) verin — bu, yükseltmeler boyunca varlığı anahtarlamaya yarar ve koşullar gruplara bu anahtar üzerinden başvurur. - Koşullar, uygulamanıza ait nesnelere ve alanlara veya Twenty’nin standart nesnelerine başvurabilir.
- Satır düzeyi güvenlik, bunu içeren planlardaki çalışma alanları için uygulanır; koşullar diğer planlarda da yine senkronize edilir, yalnızca uygulanmaz.
Varsayılan fonksiyon rolü
Yeni bir uygulama iskeleti oluşturduğunuzda, CLIdefineApplicationRole() ile bildirilen varsayılan bir rol dosyası oluşturur:
src/roles/default-role.ts
defineApplicationRole(), yükleme sırasında uygulamanızın varsayılanı olarak kullanılan rolü işaretleyen, defineRole() etrafında ince bir sarmalayıcıdır. Doğrulama, defineRole ile aynıdır, ancak derleme hattı universalIdentifier değerini uygulama manifestindeki defaultRoleUniversalIdentifier alanına otomatik olarak bağlar — bu nedenle onu defineApplication içinden kendiniz referans göstermeniz gerekmez.
Notlar:
- Uygulama başına tam olarak bir
defineApplicationRole(...)a izin verilir — birden fazla bulursa manifest derlemesi başarısız olur. - Uygulamanızın birlikte sunduğu ek roller için
defineApplicationRole()değil,defineRole()kullanın. defineApplication()üzerindedefaultRoleUniversalIdentifierdeğerini açıkça ayarlamak geriye dönük uyumluluk için hâlâ desteklenmektedir, ancakdefineApplicationRole()lehine kullanımdan kaldırılmıştır.
En İyi Uygulamalar
- Oluşturulmuş (scaffolded) rolden başlayın ve ardından giderek kısıtlayın — varsayılan rol geniş okuma erişimi verir; bu ise üretim ortamında nadiren isteyeceğiniz bir şeydir.
objectPermissionsvefieldPermissionsdeğerlerini, fonksiyonlarınızın gerçekten ihtiyaç duyduğu nesne ve alanlarla değiştirin.permissionFlagUniversalIdentifiers, platform düzeyindeki yeteneklere erişimi kontrol eder. Bunları asgari düzeyde tutun.- Çalışan bir örnek için bkz.:
hello-world/src/roles/function-role.ts.