Koosa
1.0.0
Framework Swift ที่ประกาศใช้สำหรับการจัดการการควบคุมการเข้าถึงบทบาทที่นำมาใช้

| รหัส | การดำเนินการ |
|---|---|
|
Role PRTOCOL หรือโปรโตตที่ขยายออกไป โปรดทราบว่าคุณสามารถสร้างแบบจำลองบทบาทของ Heirarchy โดยใช้การสืบทอดโปรโตต protocol GroupMember : Role {
var groupNumber : Int { set get }
}
protocol GroupAdmin : GroupMember { }Action ของโปรโตล struct BrowseGroup : Action {
let group : Group
init ( ) { // required default initializer
group = Group ( groupNumber : - 1 , isPublicGroup : false ) // default froup
}
init ( group : Group ) {
self . group = group
}
} class GroupAdminUser : User , GroupAdmin {
var groupNumber : Int
init ( name : String , age : Int , groupNumber : Int ) {
self . groupNumber = groupNumber
super . init ( name : name , age : age )
}
override required init ( ) {
self . groupNumber = - 1
super . init ( )
}
} GroupMemberUser . shouldBeAbleTo ( BrowseGroup . action ) . when {
guard let groupMember = $0 as? GroupMember ,
let browseAction = $1 as? BrowseGroup else { return false }
return groupMember . groupNumber == browseAction . group . groupNumber
}
GroupAdminUser . shouldBeAbleTo ( DeleteGroup . action ) . when {
guard let groupAdmin = $0 as? GroupAdminUser ,
let deleteAction = $1 as? DeleteGroup else {
return false
}
return groupAdmin . groupNumber == deleteAction . group . groupNumber
}
_ = SuperAdminUser . shouldBeAbleTo ( BrowseGroup . action ) let member1 = GroupMemberUser ( name : " member1 " , age : 18 , groupNumber : 1 )
let admin2 = GroupAdminUser ( name : " admin2 " , age : 22 , groupNumber : 2 )
let group1 = Group ( groupNumber : 1 , isPublicGroup : false )
let group2 = Group ( groupNumber : 2 , isPublicGroup : false )
member1 . can ( BrowseGroup ( group : group1 ) // true
member1 . can ( BrowseGroup ( group : group2 ) // false
admin2 . can ( BrowseGroup ( group : group1 ) // true: GroupAdmin inherits BrowseGroup permission from GroupMember
admin2 . can ( DeleteGroup ( group : group2 ) // true
admin2 . can ( DeleteGroup ( group : group1 ) // falseKoosa สามารถติดตั้งได้โดยใช้ cocoapods
use_frameworks !
pod ' Koosa ' มิกซ์