Commit a6f5009f authored by Patricio Bruna's avatar Patricio Bruna

This fixes #4

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