You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
196 lines
4.8 KiB
JavaScript
196 lines
4.8 KiB
JavaScript
class AuthorityControl {
|
|
constructor() {
|
|
this.authorities = new DatasetControl({
|
|
prefix:"authority",
|
|
prefixName:"권한",
|
|
keymapper:info => info.AUTH_ID,
|
|
dataGetter:obj => obj.authorityList,
|
|
formats: {
|
|
REG_DT:datetimeFormat
|
|
}
|
|
});
|
|
|
|
this.authorities.isBuiltIn = (info) => {
|
|
let current = info || this.authorities.getCurrent();
|
|
return current && current.AUTH_TYPE < 2;
|
|
};
|
|
|
|
this.authorities.isImplicit = (info) => {
|
|
let current = info || this.authorities.getCurrent();
|
|
return current && current.AUTH_TYPE === 1;
|
|
};
|
|
|
|
this.authorities.isAdmin = (info) => {
|
|
let current = info || this.authorities.getCurrent();
|
|
return current && current.AUTH_TYPE === 0;
|
|
};
|
|
|
|
this.users = new DatasetControl({
|
|
prefix:"user",
|
|
prefixName:"사용자",
|
|
keymapper:info => info.AUTH_ID + "-" + info.USER_ID,
|
|
dataGetter:obj => obj.userList,
|
|
formats: {
|
|
REG_DT:datetimeFormat
|
|
},
|
|
urls:{
|
|
load:wctx.url("/authority/user/list.do")
|
|
}
|
|
});
|
|
|
|
this.actions = new DatasetControl({
|
|
prefix:"action",
|
|
prefixName:"기능 그룹",
|
|
keymapper:info => info.AUTH_ID + "-" + info.GRP_ID,
|
|
dataGetter:obj => obj.actionList,
|
|
formats: {
|
|
REG_DT:datetimeFormat
|
|
},
|
|
urls:{
|
|
load:wctx.url("/authority/action/list.do")
|
|
}
|
|
});
|
|
|
|
this.linkedList = "users";
|
|
|
|
this.authorities.onDatasetChange = obj => this.onAuthorityListChange(obj);
|
|
this.authorities.onCurrentChange = item => {
|
|
this.onCurrentAuthorityChange(item);
|
|
let info = item ? item.data : null;
|
|
this.getLinkedList(this.linkedList, info);
|
|
};
|
|
this.authorities.onSelectionChange = selected => this.onAuthoritySelect(selected);
|
|
|
|
this.users.onDatasetChange = obj => this.onUserListChange(obj);
|
|
this.users.onCurrentChange = item => this.onCurrentUserChange(item);
|
|
this.users.onSelectionChange = selected => this.onUserSelect(selected);
|
|
|
|
this.actions.onDatasetChange = obj => this.onActionListChange(obj);
|
|
this.actions.onCurrentChange = item => this.onCurrentActionChange(item);
|
|
this.actions.onSelectionChange = selected => this.onActionSelect(selected);
|
|
}
|
|
|
|
getLinkedList(linked, info) {
|
|
if (!info)
|
|
info = this.authorities.getCurrent();
|
|
switch (this.linkedList = linked) {
|
|
case "users":
|
|
if (!info)
|
|
this.users.dataset.clear();
|
|
else {
|
|
if (!this.authorities.isImplicit(info)) {
|
|
if (this.users.query.authIDs == info.AUTH_ID) return;
|
|
this.users.query.authIDs = info.AUTH_ID;
|
|
this.users.load();
|
|
} else {
|
|
this.users.query.authIDs = info.AUTH_ID;
|
|
this.users.dataset.clear();
|
|
}
|
|
}
|
|
break;
|
|
case "actions":
|
|
if (!info)
|
|
this.actions.dataset.clear();
|
|
else {
|
|
if (!this.authorities.isAdmin(info)) {
|
|
if (this.actions.query.authIDs == info.AUTH_ID) return;
|
|
this.actions.query.authIDs = info.AUTH_ID;
|
|
this.actions.load();
|
|
} else {
|
|
this.actions.query.authIDs = info.AUTH_ID;
|
|
this.actions.dataset.clear();
|
|
}
|
|
}
|
|
break;
|
|
default: break;
|
|
}
|
|
}
|
|
|
|
onAuthorityListChange(obj) {}
|
|
|
|
onCurrentAuthorityChange(item) {}
|
|
|
|
onAuthoritySelect(selected) {}
|
|
|
|
removeAuthorities() {
|
|
let authIDs = this.authorities.dataset.getKeys("selected");
|
|
this.authorities.remove({authIDs:authIDs.join(",")});
|
|
}
|
|
|
|
onUserListChange(obj) {}
|
|
|
|
onCurrentUserChange(item) {}
|
|
|
|
onUserSelect(selected) {}
|
|
|
|
onActionListChange(obj) {}
|
|
|
|
onCurrentActionChange(item) {}
|
|
|
|
onActionSelect(selected) {}
|
|
|
|
async addUsers() {
|
|
let userIDs = await selectUser(true);
|
|
let authID = this.authorities.dataset.getCurrent().AUTH_ID;
|
|
json.post({
|
|
url:wctx.url("/authority/user/add.do"),
|
|
data:{
|
|
authID:authID,
|
|
userIDs:userIDs.join(",")
|
|
},
|
|
success:resp => {
|
|
if (resp.saved)
|
|
this.users._load();
|
|
}
|
|
});
|
|
}
|
|
|
|
removeUsers() {
|
|
let selected = this.users.dataset.getDataset("selected").map(info => info.USER_ID);
|
|
let authID = this.authorities.dataset.getCurrent().AUTH_ID;
|
|
json.post({
|
|
url:wctx.url("/authority/user/remove.do"),
|
|
data:{
|
|
authID:authID,
|
|
userIDs:selected.join(",")
|
|
},
|
|
success:resp => {
|
|
if (resp.saved)
|
|
this.users._load();
|
|
}
|
|
});
|
|
}
|
|
|
|
async addActions() {
|
|
let actions = await new ActionGroupControl(false).selectActionGroup(true);
|
|
let authID = this.authorities.dataset.getCurrent().AUTH_ID;
|
|
|
|
json.post({
|
|
url:wctx.url("/authority/action/add.do"),
|
|
data:{
|
|
authID:authID,
|
|
groupIDs:actions.join(",")
|
|
},
|
|
success:resp => {
|
|
if (resp.saved)
|
|
this.actions._load();
|
|
}
|
|
});
|
|
}
|
|
|
|
removeActions() {
|
|
let selected = this.actions.dataset.getDataset("selected").map(info => info.GRP_ID);
|
|
let authID = this.authorities.dataset.getCurrent().AUTH_ID;
|
|
json.post({
|
|
url:wctx.url("/authority/action/remove.do"),
|
|
data:{
|
|
authID:authID,
|
|
groupIDs:selected.join(",")
|
|
},
|
|
success:resp => {
|
|
if (resp.saved)
|
|
this.actions._load();
|
|
}
|
|
});
|
|
}
|
|
} |