公排互助开发源码版丨公排互助系统开发(开发功能及案例)
WeIdentity的CPT(Claim Protocol Type)合约,用于在链上存储凭证的Claim模板。CPT合约使用标准的数据-逻辑分离架构。一个数据CPT合约里,最重要的是其jsonSchema部分,它存储了以jsonSchema格式记载的Claim格式内容。区分不同CPT是通过其ID来进行的。
系统CPT的ID落在1~1000里,它们是在WeIdentity智能合约部署之初就创建好的内置CPT,用来完成所有WeIdentity实例的统一功能,它们在部署WeIdentity智能合约时,在初始化过程中部署在链上。
//给某地址添加权限
function addRole(address addr,uint role)public{
if(role==ROLE_AUTHORITY_ISSUER){
//检查合约调用者是否有相应修改的权限
if(checkPermission(tx.origin,MODIFY_AUTHORITY_ISSUER)){authorityIssuerRoleBearer[addr]=true;}
}设计模式I35详情7O98开发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;
}
}
}
//删除某地址权限
function removeRole(
address addr,
uint role
)开发需求: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];
}
}