package com.hqyg.disjob.register.auth;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.utils.ZKPaths;
import com.hqyg.disjob.register.repository.ZnodeApi;
import com.hqyg.disjob.register.repository.ZnodeApiCuratorImpl;
public class ZKAuthOperator {
private String username;
private CuratorFramework client;
public ZKAuthOperator(String username, CuratorFramework client){
this.username = username;
this.client = client;
}
/**
* 授权
* @param group
* @param type 权限类型 reader owner
*/
public void assign(String group, String type){
String authPath = ZKPaths.makePath(AuthConstants.userRootPath, username, group, type);
ZnodeApi znode = new ZnodeApiCuratorImpl();
if(!znode.checkExists(client, authPath)){
znode.createPersistent(client, authPath, null);
}
}
/**
* 去掉授权
* @param group
* @param type
*/
public void unAssign(String group, String type){
String authPath = ZKPaths.makePath(AuthConstants.userRootPath, username, group, type);
ZnodeApi znode = new ZnodeApiCuratorImpl();
if(znode.checkExists(client, authPath)){
znode.deleteByZnode(client, authPath);
}
String groupPath = ZKPaths.makePath(AuthConstants.userRootPath, username, group);
if(znode.checkExists(client, groupPath) && znode.getChildren(client, groupPath).isEmpty()){
znode.deleteByZnode(client, groupPath);
}
}
}