getUserManager.js revision c5e82a0c28bdc179de9af4587b5fe9572a963279
a60d77aaed3324cd783f4e648fedfecd54f8e551omeboldfunction pushIfNotContains(list, item) {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold if (list.indexOf(item) === -1) {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold list.push(item);
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold }
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold}
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold
a60d77aaed3324cd783f4e648fedfecd54f8e551omeboldfunction setISO8601(dateInput, string) {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" +
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold "(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\\.([0-9]+))?)?" +
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold "(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?",
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold d = string.match(new RegExp(regexp)),
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold offset = 0, date = new Date(d[1], 0, 1), time;
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold if (d[3]) {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold date.setMonth(d[3] - 1);
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold }
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold if (d[5]) {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold date.setDate(d[5]);
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold }
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold if (d[7]) {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold date.setHours(d[7]);
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold }
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold if (d[8]) {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold date.setMinutes(d[8]);
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold }
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold if (d[10]) {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold date.setSeconds(d[10]);
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold }
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold if (d[12]) {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold date.setMilliseconds(Number("0." + d[12]) * 1000);
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold }
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold if (d[14]) {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold offset = (Number(d[16]) * 60) + Number(d[17]);
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold offset *= ((d[15] === '-') ? 1 : -1);
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold }
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold offset -= date.getTimezoneOffset();
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold time = (Number(date) + (offset * 60 * 1000));
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold dateInput.setTime(Number(time));
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold return dateInput;
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold}
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold
a60d77aaed3324cd783f4e648fedfecd54f8e551omeboldfunction processDelegates(delegate, candidates) {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold var startDate = setISO8601(new Date(), delegate.startDate),
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold endDate = setISO8601(new Date(), delegate.endDate),
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold now = new Date();
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold if (startDate < now && now < endDate ) {
c5e82a0c28bdc179de9af4587b5fe9572a963279omebold pushIfNotContains(candidates, delegate.to);
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold }
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold}
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold(function () {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold if (request.method === "query") {
c5e82a0c28bdc179de9af4587b5fe9572a963279omebold if (!request.additionalParameters.userId) {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold throw "Parameter userId is required";
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold }
c5e82a0c28bdc179de9af4587b5fe9572a963279omebold var userId = request.additionalParameters.userId,
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold user = openidm.read("managed/user/"+userId), i,
c5e82a0c28bdc179de9af4587b5fe9572a963279omebold managerCandidates = ["superadmin"], manager;
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold if (!user) {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold throw "User not found: " + userId;
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold }
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold if (user.manager && user.manager.managerId) {
c5e82a0c28bdc179de9af4587b5fe9572a963279omebold pushIfNotContains(managerCandidates, user.manager.managerId);
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold manager = openidm.read("managed/user/"+user.manager.managerId);
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold if (manager.delegates !== undefined) {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold for (i = 0; i < manager.delegates.length; i++) {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold processDelegates(manager.delegates[i], managerCandidates);
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold }
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold }
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold }
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold return managerCandidates;
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold } else {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold throw "Unsupported operation: " + request.method;
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold }
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold}());