Commit a6f5009f authored by Patricio Bruna's avatar Patricio Bruna

This fixes #4

parent 92c0128f
......@@ -351,10 +351,13 @@ return /******/ (function(modules) { // webpackBootstrap
}, {
key: 'modify',
value: function modify(resource, resource_data, callback) {
var forBatch = arguments.length <= 3 || arguments[3] === undefined ? false : arguments[3];
var request_data = this.buildRequestData('Modify' + resource, callback);
request_data.resource = resource;
request_data.parse_response = this.parseResponse;
request_data.params.params = resource_data;
if (forBatch) return request_data;
this.performRequest(request_data);
}
}, {
......@@ -389,6 +392,8 @@ return /******/ (function(modules) { // webpackBootstrap
}, {
key: 'grantRight',
value: function grantRight(target_data, grantee_data, right_name, callback) {
var forBatch = arguments.length <= 4 || arguments[4] === undefined ? false : arguments[4];
var request_data = this.buildRequestData('GrantRight', callback);
var _dictionary$buildTarg = this.dictionary.buildTargetGrantee(target_data, grantee_data);
......@@ -402,6 +407,7 @@ return /******/ (function(modules) { // webpackBootstrap
request_data.params.params.grantee = grantee;
request_data.params.params.target = target;
request_data.params.params.right = { '_content': right_name };
if (forBatch) return request_data;
this.performRequest(request_data);
}
......@@ -558,11 +564,13 @@ return /******/ (function(modules) { // webpackBootstrap
}, {
key: 'modifyAccount',
value: function modifyAccount(zimbra_id, attributes, callback) {
var forBatch = arguments.length <= 3 || arguments[3] === undefined ? false : arguments[3];
var resource_data = {
id: zimbra_id,
a: this.dictionary.attributesToArray(attributes)
};
this.modify('Account', resource_data, callback);
return this.modify('Account', resource_data, callback, forBatch);
}
// Modify Domain
......@@ -13315,14 +13323,22 @@ return /******/ (function(modules) { // webpackBootstrap
return _this;
}
// TODO: Too ugly code
(0, _createClass3.default)(Domain, [{
key: 'addAdmin',
value: function addAdmin(account_id, callback) {
var grantee_data = {
'type': 'usr',
'identifier': account_id
var request_data = {};
var grantee_data = { 'type': 'usr', 'identifier': account_id };
var modifyAccountRequest = this.api.modifyAccount(account_id, { zimbraIsDelegatedAdminAccount: 'TRUE' }, callback, true);
var grantRightRequest = this.grantRight(grantee_data, this.domainAdminRights, callback, true);
request_data.requests = [modifyAccountRequest, grantRightRequest];
request_data.callback = function (err, data) {
if (err) return callback(err);
callback(null, data.GrantRightResponse);
};
this.grantRight(grantee_data, this.domainAdminRights, callback);
this.api.performRequest(request_data, true);
}
// TODO: Fix this fucking ugly code
......@@ -13724,12 +13740,16 @@ return /******/ (function(modules) { // webpackBootstrap
}, {
key: "grantRight",
value: function grantRight(grantee_data, right_name, callback) {
this.api.grantRight(this.buildRighTargetData(), grantee_data, right_name, callback);
var forBatch = arguments.length <= 3 || arguments[3] === undefined ? false : arguments[3];
return this.api.grantRight(this.buildRighTargetData(), grantee_data, right_name, callback, forBatch);
}
}, {
key: "revokeRight",
value: function revokeRight(grantee_data, right_name, callback) {
this.api.revokeRight(this.buildRighTargetData(), grantee_data, right_name, callback);
var forBatch = arguments.length <= 3 || arguments[3] === undefined ? false : arguments[3];
return this.api.revokeRight(this.buildRighTargetData(), grantee_data, right_name, callback, forBatch);
}
}]);
return Zimbra;
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -234,11 +234,12 @@ export default class ZimbraAdminApi {
}
modify(resource, resource_data, callback){
modify(resource, resource_data, callback, forBatch = false){
const request_data = this.buildRequestData(`Modify${resource}`, callback);
request_data.resource = resource;
request_data.parse_response = this.parseResponse;
request_data.params.params = resource_data;
if (forBatch) return request_data;
this.performRequest(request_data);
}
......@@ -267,13 +268,14 @@ export default class ZimbraAdminApi {
// type: (account|cos|dl|domain),
// identifier: (name or zimbraId)
// }
grantRight(target_data, grantee_data, right_name, callback) {
grantRight(target_data, grantee_data, right_name, callback, forBatch = false) {
const request_data = this.buildRequestData('GrantRight', callback);
const [target, grantee] = this.dictionary.buildTargetGrantee(target_data, grantee_data);
request_data.parse_response = this.parseEmptyResponse;
request_data.params.params.grantee = grantee;
request_data.params.params.target = target;
request_data.params.params.right = { '_content': right_name };
if (forBatch) return request_data;
this.performRequest(request_data);
}
......@@ -388,12 +390,12 @@ export default class ZimbraAdminApi {
}
// Modify Account
modifyAccount(zimbra_id, attributes, callback) {
modifyAccount(zimbra_id, attributes, callback, forBatch = false) {
let resource_data = {
id: zimbra_id,
a: this.dictionary.attributesToArray(attributes)
};
this.modify('Account', resource_data, callback);
return this.modify('Account', resource_data, callback, forBatch);
}
// Modify Domain
......
......@@ -9,12 +9,18 @@ export default class Domain extends Zimbra {
this.domainAdminRights = 'domainAdminRights';
}
// TODO: Too ugly code
addAdmin(account_id, callback) {
const grantee_data = {
'type': 'usr',
'identifier': account_id
}
this.grantRight(grantee_data, this.domainAdminRights, callback);
const request_data = {};
const grantee_data = { 'type': 'usr', 'identifier': account_id };
let modifyAccountRequest = this.api.modifyAccount(account_id, { zimbraIsDelegatedAdminAccount: 'TRUE' }, callback, true);
const grantRightRequest = this.grantRight(grantee_data, this.domainAdminRights, callback, true);
request_data.requests = [modifyAccountRequest, grantRightRequest];
request_data.callback = function(err, data) {
if (err) return callback(err);
callback(null, data.GrantRightResponse);
};
this.api.performRequest(request_data, true);
}
// TODO: Fix this fucking ugly code
......
......@@ -53,12 +53,12 @@ export default class Zimbra {
});
}
grantRight(grantee_data, right_name, callback){
this.api.grantRight(this.buildRighTargetData(), grantee_data, right_name, callback);
grantRight(grantee_data, right_name, callback, forBatch = false){
return this.api.grantRight(this.buildRighTargetData(), grantee_data, right_name, callback, forBatch);
}
revokeRight(grantee_data, right_name, callback){
this.api.revokeRight(this.buildRighTargetData(), grantee_data, right_name, callback);
revokeRight(grantee_data, right_name, callback, forBatch = false){
return this.api.revokeRight(this.buildRighTargetData(), grantee_data, right_name, callback, forBatch);
}
}
......@@ -491,16 +491,18 @@
let api = new ZimbraAdminApi(auth_data);
let domain_admin = 'domain_admin@customer.dev';
let resource_name = Date.now() + '.dev';
api.createDomain(resource_name, {}, function(err, data){
if (err) console.error(err);
let domain = data;
domain.addAdmin(domain_admin, function(e, d){
if (e) return console.error(e);
expect(err).to.be.null;
domain.getACLs(function(e, d){
api.getAccount(domain_admin, function(err, account){
api.createDomain(resource_name, {}, function(err, data){
if (err) console.error(err);
let domain = data;
domain.addAdmin(account.id, function(e, d){
if (e) return console.error(e);
expect(d[0].grantee.name).to.be.equal(domain_admin);
done();
expect(err).to.be.null;
domain.getACLs(function(e, d){
if (e) return console.error(e);
expect(d[0].grantee.name).to.be.equal(account.name);
done();
});
});
});
});
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment