mi-auth-client
Version:
Use to MI product authorization and authentication
756 lines • 61.2 kB
JavaScript
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
Object.defineProperty(exports, "__esModule", { value: true });
var mockStrapiClientTool_1 = require("./mock/mockStrapiClientTool");
var axios_1 = require("axios");
var utils_1 = require("./utils");
var _ = require("lodash");
var R = require("ramda");
var pjson = require('../package.json');
var version = pjson.version;
function strapiClientTool(url) {
axios_1.default.defaults.baseURL = utils_1.setUrl(url);
return {
// user operations
addBrandOwner: function (token, owners, advertisers) {
return __awaiter(this, void 0, void 0, function () {
var superAdmins;
var _this = this;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.listUsers(token, { ids: owners })];
case 1:
superAdmins = (_a.sent()).data;
superAdmins.forEach(function (user) {
_this.updateUser(token, user.id, { advertisers: _.concat(user.advertisers.map(function (e) { return e.id; }), advertisers) });
});
return [2 /*return*/];
}
});
});
},
// user operations
addBrandManager: function (token, manager, advertisers) {
return __awaiter(this, void 0, void 0, function () {
var superAdmins;
var _this = this;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.listUsers(token, { ids: manager })];
case 1:
superAdmins = (_a.sent()).data;
superAdmins.forEach(function (user) {
_this.updateUser(token, user.id, { advertisers: _.concat(user.advertisers.map(function (e) { return e.id; }), advertisers) });
});
return [2 /*return*/];
}
});
});
},
deleteSuperAdmin: function (token, brand) {
return __awaiter(this, void 0, void 0, function () {
var superAdmins, advertisers;
var _this = this;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.listUsers(token, { brands: [brand], roles: ['superAdmin'] })];
case 1:
superAdmins = (_a.sent()).data;
return [4 /*yield*/, this.listAdvertisers(token, { brands: [brand] })];
case 2:
advertisers = (_a.sent()).data;
return [4 /*yield*/, Promise.all[superAdmins.forEach(function (e) {
var updatedAdvertisers = _.filter(e.advertisers, function (advertiser) { return (!advertisers.map(function (e) { return e.id; }).includes(advertiser.id)); });
_this.updateUser(token, e.id, { advertisers: updatedAdvertisers.map(function (e) { return e.id; }) });
})]];
case 3:
_a.sent();
return [2 /*return*/];
}
});
});
},
deleteManager: function (token, brand) {
return __awaiter(this, void 0, void 0, function () {
var managers, advertisers;
var _this = this;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.listUsers(token, { brands: [brand], roles: ['manager'] })];
case 1:
managers = (_a.sent()).data;
return [4 /*yield*/, this.listAdvertisers(token, { brands: [brand] })];
case 2:
advertisers = (_a.sent()).data;
return [4 /*yield*/, Promise.all[managers.forEach(function (e) {
var updatedAdvertisers = _.filter(e.advertisers, function (advertiser) { return (!advertisers.map(function (e) { return e.id; }).includes(advertiser.id)); });
_this.updateUser(token, e.id, { advertisers: updatedAdvertisers.map(function (e) { return e.id; }) });
})]];
case 3:
_a.sent();
return [2 /*return*/];
}
});
});
},
createUser: function (token, profile) {
return __awaiter(this, void 0, void 0, function () {
var _this = this;
return __generator(this, function (_a) {
return [2 /*return*/, new Promise(function (resolve) { return __awaiter(_this, void 0, void 0, function () {
var username, email, password, role, platform, advertisers, allRoles, allPlatforms, data, config;
var _this = this;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!profile) {
resolve({ data: null, error: "Please provide your user profile." });
}
username = profile.username, email = profile.email, password = profile.password, role = profile.role, platform = profile.platform, advertisers = profile.advertisers;
if (!username && !email && !password && !role && !platform && !advertisers) {
resolve({ data: null, error: "Please provide username, email, password, role, access, advertiser in profile." });
}
if (typeof (username) != 'string') {
resolve({ data: null, error: "Type of username must be string." });
}
if (!utils_1.isEmail(email)) {
resolve({ data: null, error: "Invalid email format." });
}
if (typeof (password) != 'string') {
resolve({ data: null, error: "Type of password must be string." });
}
if (!utils_1.isValidKey(role, utils_1.roleNames)) {
resolve({ data: null, error: "Type of role must be string." });
}
if (!Array.isArray(platform)) {
resolve({ data: null, error: "Type of platform must be array." });
}
return [4 /*yield*/, utils_1.roles(token)];
case 1:
allRoles = _a.sent();
return [4 /*yield*/, this.listPlatforms(token)];
case 2:
allPlatforms = _a.sent();
data = profile;
data.role = _.find(allRoles, function (e) { return e.name == role; }).id;
data.platforms = _.map(_.filter(allPlatforms, function (e) { return platform.includes(e.name); }), function (e) { return e.id; });
config = { headers: { Authorization: "Bearer " + token, cliVersion: version } };
axios_1.default.post('/auth/local/register', data, config).then(function (res) { return __awaiter(_this, void 0, void 0, function () {
var _a, id, email, username, role, _b, platforms, _c, advertisers, brandIds, reducedPlatform, brand, _d, data;
return __generator(this, function (_e) {
switch (_e.label) {
case 0:
_a = res.data.user, id = _a.id, email = _a.email, username = _a.username, role = _a.role, _b = _a.platforms, platforms = _b === void 0 ? [] : _b, _c = _a.advertisers, advertisers = _c === void 0 ? [] : _c;
brandIds = new Set();
reducedPlatform = [];
advertisers.forEach(function (e) {
brandIds.add(e.brand);
});
platforms.forEach(function (e) {
reducedPlatform.push(e.name);
});
if (!(brandIds.size == 0)) return [3 /*break*/, 1];
_d = [];
return [3 /*break*/, 3];
case 1: return [4 /*yield*/, this.listBrands(token, { ids: Array.from(brandIds) })];
case 2:
_d = _e.sent();
_e.label = 3;
case 3:
brand = _d;
data = { id: id, email: email, username: username, role: utils_1.roleNames2GUI(role.name), platform: reducedPlatform, brand: brand.data, advertisers: advertisers };
resolve({ data: data, error: null });
return [2 /*return*/];
}
});
}); }).catch(function (err) {
console.log(err);
resolve({ data: null, error: utils_1.parseErrorMessage(err) });
});
return [2 /*return*/];
}
});
}); })];
});
});
},
login: function (name, password) {
return __awaiter(this, void 0, void 0, function () {
var _this = this;
return __generator(this, function (_a) {
return [2 /*return*/, new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
var _this = this;
return __generator(this, function (_a) {
if (!name) {
resolve({ data: null, error: "Please provide your name, which is email." });
}
if (!password) {
resolve({ data: null, error: "Please provide your password." });
}
if (!utils_1.isEmail(name)) {
resolve({ data: null, error: "Invalid email format." });
}
if (typeof (password) != 'string') {
resolve({ data: null, error: "Type of password must be string." });
}
axios_1.default.post('/auth/local', { identifier: name, password: password })
.then(function (res) { return __awaiter(_this, void 0, void 0, function () {
var _a, jwt, _b, id, email, username, role, platforms, advertisers, brandIds, brand, _c, reducedPlatform, data;
return __generator(this, function (_d) {
switch (_d.label) {
case 0:
_a = res.data, jwt = _a.jwt, _b = _a.user, id = _b.id, email = _b.email, username = _b.username, role = _b.role, platforms = _b.platforms, advertisers = _b.advertisers;
brandIds = new Set();
advertisers.forEach(function (e) {
brandIds.add(e.brand);
});
if (!(brandIds.size == 0)) return [3 /*break*/, 1];
_c = [];
return [3 /*break*/, 3];
case 1: return [4 /*yield*/, this.listBrands(jwt, { ids: Array.from(brandIds) })];
case 2:
_c = _d.sent();
_d.label = 3;
case 3:
brand = _c;
reducedPlatform = _.map(platforms, function (e) { return e.name; });
data = { id: id, email: email, username: username, role: utils_1.roleNames2GUI(role.name), platform: reducedPlatform, brand: brand.data, advertisers: advertisers };
resolve({ data: { jwt: jwt, user: data }, error: null });
return [2 /*return*/];
}
});
}); })
.catch(function (err) {
resolve({ data: null, error: utils_1.parseErrorMessage(err) });
});
return [2 /*return*/];
});
}); })];
});
});
},
getMe: function (token) {
return __awaiter(this, void 0, void 0, function () {
var _this = this;
return __generator(this, function (_a) {
return [2 /*return*/, new Promise(function (resolve, reject) {
var config = {
headers: { Authorization: "Bearer " + token, cliVersion: version }
};
axios_1.default.get('/users/me', config)
.then(function (res) { return __awaiter(_this, void 0, void 0, function () {
var _a, id, email, username, role, platforms, advertisers, brandIds, reducedPlatform, brand, _b, data;
return __generator(this, function (_c) {
switch (_c.label) {
case 0:
_a = res.data, id = _a.id, email = _a.email, username = _a.username, role = _a.role, platforms = _a.platforms, advertisers = _a.advertisers;
brandIds = new Set();
reducedPlatform = [];
advertisers.forEach(function (e) {
brandIds.add(e.brand);
});
if (!(brandIds.size == 0)) return [3 /*break*/, 1];
_b = [];
return [3 /*break*/, 3];
case 1: return [4 /*yield*/, this.listBrands(token, { ids: Array.from(brandIds) })];
case 2:
_b = _c.sent();
_c.label = 3;
case 3:
brand = _b;
platforms.forEach(function (e) {
reducedPlatform.push(e.name);
});
data = { id: id, email: email, username: username, role: utils_1.roleNames2GUI(role.name), platform: reducedPlatform, brand: brand.data, advertisers: advertisers };
resolve({ data: data, error: null });
return [2 /*return*/];
}
});
}); })
.catch(function (err) {
resolve({ data: null, error: utils_1.parseErrorMessage(err) });
});
})];
});
});
},
listUsers: function (token, select, options) {
if (select === void 0) { select = {}; }
return __awaiter(this, void 0, void 0, function () {
var _this = this;
return __generator(this, function (_a) {
return [2 /*return*/, new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
var ids, brands, advertisers, roles, params, _a, limit, _b, sort_1, sortFilter_1, config;
var _this = this;
return __generator(this, function (_c) {
if (!token) {
resolve({ data: null, error: "Please provide your token." });
}
ids = select.ids, brands = select.brands, advertisers = select.advertisers, roles = select.roles;
params = new URLSearchParams();
if (ids) {
ids.forEach(function (e) {
if (e)
params.append('id_in', e.toString());
});
}
if (brands) {
brands.forEach(function (e) {
if (e)
params.append('advertisers.brand_in', e.toString());
});
}
if (advertisers) {
advertisers.forEach(function (e) {
if (e)
params.append('advertisers.id_in', e.toString());
});
}
if (roles) {
roles.forEach(function (e) {
if (e)
params.append('role.name_in', utils_1.roleNames[e.toString()]);
});
}
if (options) {
_a = options.limit, limit = _a === void 0 ? -1 : _a, _b = options.sort, sort_1 = _b === void 0 ? {} : _b;
sortFilter_1 = [];
params.append('_limit', limit.toString());
_.keys(sort_1).forEach(function (e) {
sortFilter_1.push(e + ":" + utils_1.sortSetting[sort_1[e]]);
});
if (sortFilter_1.length)
params.append('_sort', sortFilter_1.join(','));
}
config = { params: params, headers: { Authorization: "Bearer " + token, cliVersion: version } };
axios_1.default.get('/users', config).then(function (res) { return __awaiter(_this, void 0, void 0, function () {
var data, allBrands;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
data = [];
return [4 /*yield*/, this.listBrands(token)];
case 1:
allBrands = _a.sent();
res.data.forEach(function (user) {
var id = user.id, email = user.email, username = user.username, role = user.role, platforms = user.platforms, advertisers = user.advertisers;
var brandIds = new Set();
var reducedPlatform = [];
advertisers.forEach(function (e) {
brandIds.add(e.brand);
});
platforms.forEach(function (e) {
reducedPlatform.push(e.name);
});
var brand = allBrands.data.filter(function (e) { return Array.from(brandIds).includes(e.id); });
data.push({ id: id, email: email, username: username, role: utils_1.roleNames2GUI(role.name), platform: reducedPlatform, brand: brand, advertisers: advertisers });
});
resolve({ data: data, error: null });
return [2 /*return*/];
}
});
}); }).catch(function (err) {
resolve({ data: null, error: utils_1.parseErrorMessage(err) });
});
return [2 /*return*/];
});
}); })];
});
});
},
updateUser: function (token, id, profile) {
return __awaiter(this, void 0, void 0, function () {
var _this = this;
return __generator(this, function (_a) {
return [2 /*return*/, new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
var username, password, role, platform, data, allRoles, allPlatforms, config;
var _this = this;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
username = profile.username, password = profile.password, role = profile.role, platform = profile.platform;
if (password && typeof (password) != 'string') {
resolve({ data: null, error: "Type of password must be string." });
}
if (role && typeof (role) != 'string') {
resolve({ data: null, error: "Type of role must be string." });
}
if (platform && !Array.isArray(platform)) {
resolve({ data: null, error: "Type of platform must be array." });
}
data = profile;
if (!role) return [3 /*break*/, 2];
return [4 /*yield*/, utils_1.roles(token)];
case 1:
allRoles = _a.sent();
data.role = _.find(allRoles, function (e) { return e.name == role; }).id;
_a.label = 2;
case 2:
if (!platform) return [3 /*break*/, 4];
return [4 /*yield*/, this.listPlatforms(token)];
case 3:
allPlatforms = _a.sent();
data.platforms = _.map(_.filter(allPlatforms, function (e) { return platform.includes(e.name); }), function (e) { return e.id; });
_a.label = 4;
case 4:
config = { headers: { Authorization: "Bearer " + token, cliVersion: version } };
axios_1.default.put("/users/" + id, data, config).then(function (res) { return __awaiter(_this, void 0, void 0, function () {
var _a, id, email, username, role, platforms, advertisers, brandIds, reducedPlatform, brand, _b, data;
return __generator(this, function (_c) {
switch (_c.label) {
case 0:
_a = res.data, id = _a.id, email = _a.email, username = _a.username, role = _a.role, platforms = _a.platforms, advertisers = _a.advertisers;
brandIds = new Set();
reducedPlatform = [];
advertisers.forEach(function (e) {
brandIds.add(e.brand);
});
platforms.forEach(function (e) {
reducedPlatform.push(e.name);
});
if (!(brandIds.size == 0)) return [3 /*break*/, 1];
_b = [];
return [3 /*break*/, 3];
case 1: return [4 /*yield*/, this.listBrands(token, { ids: Array.from(brandIds) })];
case 2:
_b = _c.sent();
_c.label = 3;
case 3:
brand = _b;
data = { id: id, email: email, username: username, role: utils_1.roleNames2GUI(role.name), platform: reducedPlatform, brand: brand.data, advertisers: advertisers };
resolve({ data: data, error: null });
return [2 /*return*/];
}
});
}); }).catch(function (err) {
resolve({ data: null, error: utils_1.parseErrorMessage(err) });
});
return [2 /*return*/];
}
});
}); })];
});
});
},
deleteUser: function (token, id) {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, new Promise(function (resolve, reject) {
var config = { headers: { Authorization: "Bearer " + token, cliVersion: version } };
axios_1.default.delete("/users/" + id, config).then(function (res) {
resolve({ data: res.data, error: null });
}).catch(function (err) {
resolve({ data: null, error: utils_1.parseErrorMessage(err) });
});
})];
});
});
},
// role operations
listRoles: function (token) {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, new Promise(function (resolve, reject) {
var config = {
headers: { Authorization: "Bearer " + token, cliVersion: version }
};
axios_1.default.get('/users-permissions/roles', config).then(function (res) {
resolve(res.data.roles.map(function (e) {
return __assign(__assign({}, e), { name: utils_1.roleNames2GUI(e.name) });
}));
}).catch(function (err) {
console.log(utils_1.parseErrorMessage(err));
reject(err);
});
})];
});
});
},
createRole: function (token, params) {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, new Promise(function (resolve, reject) {
var config = {
headers: { Authorization: "Bearer " + token }
};
axios_1.default.post('/users-permissions/roles', R.omit(['id'], params), config).then(function (res) {
resolve({ data: res.data.role, error: null });
}).catch(function (err) {
resolve({ data: null, error: err.response.data.message[0].messages });
//reject(err)
});
})];
});
});
},
updateRole: function (token, params) {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, new Promise(function (resolve, reject) {
var config = {
headers: { Authorization: "Bearer " + token, cliVersion: version }
};
axios_1.default.put("/users-permissions/roles/" + params.id, R.omit(['id'], params), config).then(function (res) {
resolve({ data: res.data.role, error: null });
}).catch(function (err) {
console.log(err);
reject(err);
});
})];
});
});
},
deleteRole: function (token, id) {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, new Promise(function (resolve, reject) {
var config = {
headers: { Authorization: "Bearer " + token, cliVersion: version }
};
axios_1.default.delete("/users-permissions/roles/" + id, config).then(function (res) {
resolve({ data: res.data.role, error: null });
}).catch(function (err) {
console.log(err);
reject(err);
});
})];
});
});
},
// platform operations
listPlatforms: function (token) {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, new Promise(function (resolve, reject) {
var config = {
headers: { Authorization: "Bearer " + token, cliVersion: version }
};
axios_1.default.get('/platforms', config).then(function (res) {
resolve(res.data);
}).catch(function (err) {
console.log(err);
reject(err);
});
})];
});
});
},
// brand operations
createBrand: function (token, profile) {
return __awaiter(this, void 0, void 0, function () {
var _this = this;
return __generator(this, function (_a) {
return [2 /*return*/, new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
var name, _a, owners, config;
var _this = this;
return __generator(this, function (_b) {
name = profile.name, _a = profile.owners, owners = _a === void 0 ? [] : _a;
if (!name) {
resolve({ data: null, error: "Please provie name in profile" });
}
if (typeof (name) != 'string') {
resolve({ data: null, error: "Invalid type of name" });
}
config = { headers: { Authorization: "Bearer " + token, cliVersion: version } };
axios_1.default.post('/brands', profile, config).then(function (res) { return __awaiter(_this, void 0, void 0, function () {
return __generator(this, function (_a) {
resolve({ data: res.data, error: null });
return [2 /*return*/];
});
}); }).catch(function (err) {
resolve({ data: null, error: utils_1.parseErrorMessage(err) });
});
return [2 /*return*/];
});
}); })];
});
});
},
listBrands: function (token, select, options) {
if (select === void 0) { select = {}; }
return __awaiter(this, void 0, void 0, function () {
var _this = this;
return __generator(this, function (_a) {
return [2 /*return*/, new Promise(function (resolve, reject) {
var ids = select.ids, disabled = select.disabled;
var params = new URLSearchParams();
if (ids) {
ids.forEach(function (e) {
if (e)
params.append('id_in', e.toString());
});
}
if (disabled !== undefined) {
params.append('disabled_eq', disabled.toString());
}
if (options) {
var _a = options.limit, limit = _a === void 0 ? -1 : _a, _b = options.sort, sort_2 = _b === void 0 ? {} : _b;
var sortFilter_2 = [];
params.append('_limit', limit.toString());
_.keys(sort_2).forEach(function (e) {
sortFilter_2.push(e + ":" + utils_1.sortSetting[sort_2[e]]);
});
if (sortFilter_2.length)
params.append('_sort', sortFilter_2.join(','));
}
var config = { params: params, headers: { Authorization: "Bearer " + token, cliVersion: version } };
axios_1.default.get("/brands", config).then(function (res) { return __awaiter(_this, void 0, void 0, function () {
var data, saParams, superAdmins, managerParams, allManagers;
var _this = this;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
data = [];
saParams = new URLSearchParams();
saParams.append('role.name', utils_1.roleNames['superAdmin']);
return [4 /*yield*/, utils_1.users(token, saParams)];
case 1:
superAdmins = _a.sent();
managerParams = new URLSearchParams();
managerParams.append('role.name', utils_1.roleNames['manager']);
return [4 /*yield*/, utils_1.users(token, managerParams)];
case 2:
allManagers = _a.sent();
res.data.forEach(function (e) { return __awaiter(_this, void 0, void 0, function () {
var owners, managers, owner, manager, brand;
return __generator(this, function (_a) {
owners = superAdmins.filter(function (o) {
var ad = o.advertisers.map(function (v) { return v.brand; });
return ad.includes(e.id);
});
managers = allManagers.filter(function (o) {
var ad = o.advertisers.map(function (v) { return v.brand; });
return ad.includes(e.id);
});
owner = owners.length ?
owners.map(function (o) {
return {
username: o.username,
email: o.email,
id: o.id,
role: utils_1.roleNames2GUI(o.role.name),
platform: o.platforms.map(function (e) { return e.name; })
};
}) : [];
manager = managers.length ?
managers.map(function (o) {
return {
username: o.username,
email: o.email,
id: o.id,
role: utils_1.roleNames2GUI(o.role.name),
platform: o.platforms.map(function (e) { return e.name; })
};
}) : [];
brand = __assign(__assign({}, e), { owners: owner, manager: manager });
data.push(brand);
return [2 /*return*/];
});
}); });
resolve({ data: data, error: null });
return [2 /*return*/];
}
});
}); }).catch(function (err) {
resolve({ data: null, error: utils_1.parseErrorMessage(err) });
});
})];
});
});
},
updateBrand: function (token, id, profile) {
return __awaiter(this, void 0, void 0, function () {
var name, owners, advertisers, manager, disabled;
var _this = this;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
name = profile.name, owners = profile.owners, advertisers = profile.advertisers, manager = profile.manager, disabled = profile.disabled;
if (!owners) return [3 /*break*/, 2];
return [4 /*yield*/, this.deleteSuperAdmin(token, id)];
case 1:
_a.sent();
_a.label = 2;
case 2:
if (!manager) return [3 /*break*/, 4];
return [4 /*yield*/, this.deleteManager(token, id)
// update brand
];
case 3:
_a.sent();
_a.label = 4;
case 4:
// update brand
return [2 /*return*/, new Promise(function (resolve, reject) {
var config = { headers: { Authorization: "Bearer " + token, cliVersion: version } };
axios_1.default.put("/brands/" + id, { name: name, advertisers: advertisers, disabled: disabled }, config).then(function (res) { return __awaiter(_this, void 0, void 0, function () {
var advertisers;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
advertisers = res.data.advertisers;
if (!(owners && owners.length != 0)) return [3 /*break*/, 2];
return [4 /*yield*/, this.addBrandOwner(token, owners, advertisers.map(function (e) { return e.id; }))
// add manager
];
case 1:
_a.sent();
_a.label = 2;
case 2:
if (!(manager && manager.length != 0)) return [3 /*break*/, 4];
return [4 /*yield*/, this.addBrandManager(token, manager, advertisers.map(function (e) { return e.id; }))];
case 3:
_a.sent();
_a.label = 4;
case 4:
resolve({ data: _.pick(res.data, ['id', 'name', 'advertisers', 'disabled']), error: null });
return [2 /*return*/];
}
});
}