公排互助開發(fā)源碼版丨公排互助系統(tǒng)開發(fā)(開發(fā)功能及案例)
WeIdentity的CPT(Claim Protocol Type)合約,用于在鏈上存儲憑證的Claim模板。CPT合約使用標(biāo)準(zhǔn)的數(shù)據(jù)-邏輯分離架構(gòu)。一個數(shù)據(jù)CPT合約里,最重要的是其jsonSchema部分,它存儲了以jsonSchema格式記載的Claim格式內(nèi)容。區(qū)分不同CPT是通過其ID來進(jìn)行的。
系統(tǒng)CPT的ID落在1~1000里,它們是在WeIdentity智能合約部署之初就創(chuàng)建好的內(nèi)置CPT,用來完成所有WeIdentity實(shí)例的統(tǒng)一功能,它們在部署WeIdentity智能合約時,在初始化過程中部署在鏈上。
//給某地址添加權(quán)限
function addRole(address addr,uint role)public{
if(role==ROLE_AUTHORITY_ISSUER){
//檢查合約調(diào)用者是否有相應(yīng)修改的權(quán)限
if(checkPermission(tx.origin,MODIFY_AUTHORITY_ISSUER)){authorityIssuerRoleBearer[addr]=true;}
}設(shè)計(jì)模式I35詳情7O98開發(fā)O7I8?
if(role==ROLE_COMMITTEE){
if(checkPermission(tx.origin,MODIFY_COMMITTEE)){committeeMemberRoleBearer[addr]=true;}
}
if(role==ROLE_ADMIN){
if(checkPermission(tx.origin,MODIFY_ADMIN)){
adminRoleBearer[addr]=true;
}
}
}
//刪除某地址權(quán)限
function removeRole(
address addr,
uint role
)開發(fā)需求:MrsFu123
public
{
if(role==ROLE_AUTHORITY_ISSUER){
if(checkPermission(tx.origin,MODIFY_AUTHORITY_ISSUER)){
authorityIssuerRoleBearer[addr]=false;
}
}
if(role==ROLE_COMMITTEE){
if(checkPermission(tx.origin,MODIFY_COMMITTEE)){
committeeMemberRoleBearer[addr]=false;
}
}
if(role==ROLE_ADMIN){
if(checkPermission(tx.origin,MODIFY_ADMIN)){
adminRoleBearer[addr]=false;
}
}
}
//檢查某地址是否屬于某類別
function checkRole(
address addr,
uint role
)
public
constant
returns(bool)
{
if(role==ROLE_AUTHORITY_ISSUER){
return authorityIssuerRoleBearer[addr];
}
if(role==ROLE_COMMITTEE){
return committeeMemberRoleBearer[addr];
}
if(role==ROLE_ADMIN){
return adminRoleBearer[addr];
}
}