@mikezimm/npmfunctions
Version:
Functions used in my SPFx webparts
593 lines (590 loc) • 32.2 kB
JavaScript
"use strict";
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 });
exports.getCurrentUser = exports.getSiteUsers = exports.getSiteAdmins = exports.getUserPermissions = exports.ensureTheseUsers = exports.ensureUserHere = exports.checkForLoginName = exports.getEmailFromLoginName = exports.checkIfUserExistsInArray = exports.ensureUserInfo = exports.getPrincipalTypeString = void 0;
var all_1 = require("@pnp/sp/presets/all");
var all_2 = require("@pnp/sp/presets/all");
require("@pnp/sp/webs");
require("@pnp/sp/clientside-pages/web");
require("@pnp/sp/site-users/web");
var sp_1 = require("@pnp/sp");
require("@pnp/sp/webs");
require("@pnp/sp/site-users/web");
var ErrorHandler_1 = require("../Logging/ErrorHandler");
var PackageConst_1 = require("../../PackageConst");
var checks_1 = require("../Arrays/checks");
var urlServices_1 = require("../Strings/urlServices");
/***
* db db .d8888. d88888b d8888b.
* 88 88 88' YP 88' 88 `8D
* 88 88 `8bo. 88ooooo 88oobY'
* 88 88 `Y8b. 88~~~~~ 88`8b
* 88b d88 db 8D 88. 88 `88.
* ~Y8888P' `8888Y' Y88888P 88 YD
*
*
import { getPrincipalTypeString, ensureUserInfo, checkIfUserExistsInArray, getEmailFromLoginName, checkForLoginName
ensureUserHere, ensureTheseUsers, getUserPermissions, getSiteAdmins, } from '@mikezimm/npmfunctions/dist/Users/userServices';
import { IUser } from '@mikezimm/npmfunctions/dist/Users/IUserInterfaces';
*/
/***
* d888b d88888b d888888b d8888b. d8888b. d888888b d8b db .o88b. d888888b d8888b. .d8b. db d888888b db db d8888b. d88888b
* 88' Y8b 88' `~~88~~' 88 `8D 88 `8D `88' 888o 88 d8P Y8 `88' 88 `8D d8' `8b 88 `~~88~~' `8b d8' 88 `8D 88'
* 88 88ooooo 88 88oodD' 88oobY' 88 88V8o 88 8P 88 88oodD' 88ooo88 88 88 `8bd8' 88oodD' 88ooooo
* 88 ooo 88~~~~~ 88 88~~~ 88`8b 88 88 V8o88 8b 88 88~~~ 88~~~88 88 88 88 88~~~ 88~~~~~
* 88. ~8~ 88. 88 88 88 `88. .88. 88 V888 Y8b d8 .88. 88 88 88 88booo. 88 88 88 88.
* Y888P Y88888P YP 88 88 YD Y888888P VP V8P `Y88P' Y888888P 88 YP YP Y88888P YP YP 88 Y88888P
*
*
*/
function getPrincipalTypeString(type) {
if (type === 0) {
return 'None';
}
if (type === 1) {
return 'User';
}
if (type === 2) {
return 'Distribution';
}
if (type === 4) {
return 'Security';
}
if (type === 8) {
return 'SharePoint';
}
if (type === 15) {
return 'All';
}
}
exports.getPrincipalTypeString = getPrincipalTypeString;
/***
* d88888b d8b db .d8888. db db d8888b. d88888b db db .d8888. d88888b d8888b. d888888b d8b db d88888b .d88b.
* 88' 888o 88 88' YP 88 88 88 `8D 88' 88 88 88' YP 88' 88 `8D `88' 888o 88 88' .8P Y8.
* 88ooooo 88V8o 88 `8bo. 88 88 88oobY' 88ooooo 88 88 `8bo. 88ooooo 88oobY' 88 88V8o 88 88ooo 88 88
* 88~~~~~ 88 V8o88 `Y8b. 88 88 88`8b 88~~~~~ 88 88 `Y8b. 88~~~~~ 88`8b 88 88 V8o88 88~~~ 88 88
* 88. 88 V888 db 8D 88b d88 88 `88. 88. 88b d88 db 8D 88. 88 `88. .88. 88 V888 88 `8b d8'
* Y88888P VP V8P `8888Y' ~Y8888P' 88 YD Y88888P ~Y8888P' `8888Y' Y88888P 88 YD Y888888P VP V8P YP `Y88P'
*
*
*/
function ensureUserInfo(webURL, userEmail) {
return __awaiter(this, void 0, void 0, function () {
var thisListWeb, result, thisUser;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
thisListWeb = (0, all_1.Web)(webURL);
return [4 /*yield*/, thisListWeb.ensureUser(userEmail)];
case 1:
result = _a.sent();
console.log('userInfo', result);
thisUser = {
title: result.data.Title,
Title: result.data.Title,
initials: '',
email: result.data.Email,
id: result.data.Id,
Id: result.data.Id,
ID: result.data.Id,
isSiteAdmin: result.data.IsSiteAdmin,
LoginName: result.data.LoginName,
Name: result.data.LoginName,
//These optional props are from the React PeoplePicker control
imageInitials: '',
imageUrl: '',
loginName: result.data.LoginName,
text: result.data.Title,
remoteID: null,
ensureWeb: webURL,
};
return [2 /*return*/, thisUser];
}
});
});
}
exports.ensureUserInfo = ensureUserInfo;
/***
* .o88b. db db d88888b .o88b. db dD d888888b d88888b db db .d8888. d88888b d8888b.
* d8P Y8 88 88 88' d8P Y8 88 ,8P' `88' 88' 88 88 88' YP 88' 88 `8D
* 8P 88ooo88 88ooooo 8P 88,8P 88 88ooo 88 88 `8bo. 88ooooo 88oobY'
* 8b 88~~~88 88~~~~~ 8b 88`8b 88 88~~~ 88 88 `Y8b. 88~~~~~ 88`8b
* Y8b d8 88 88 88. Y8b d8 88 `88. .88. 88 88b d88 db 8D 88. 88 `88.
* `Y88P' YP YP Y88888P `Y88P' YP YD Y888888P YP ~Y8888P' `8888Y' Y88888P 88 YD
*
*
* d88888b db db d888888b .d8888. d888888b .d8888. d888888b d8b db .d8b. d8888b. d8888b. .d8b. db db
* 88' `8b d8' `88' 88' YP `~~88~~' 88' YP `88' 888o 88 d8' `8b 88 `8D 88 `8D d8' `8b `8b d8'
* 88ooooo `8bd8' 88 `8bo. 88 `8bo. 88 88V8o 88 88ooo88 88oobY' 88oobY' 88ooo88 `8bd8'
* 88~~~~~ .dPYb. 88 `Y8b. 88 `Y8b. 88 88 V8o88 88~~~88 88`8b 88`8b 88~~~88 88
* 88. .8P Y8. .88. db 8D 88 db 8D .88. 88 V888 88 88 88 `88. 88 `88. 88 88 88
* Y88888P YP YP Y888888P `8888Y' YP `8888Y' Y888888P VP V8P YP YP 88 YD 88 YD YP YP YP
*
*
*/
function checkIfUserExistsInArray(recentUsers, user) {
var remoteId = false;
remoteId = (0, checks_1.doesObjectExistInArray)(recentUsers, "Id", user.id, true);
if (remoteId === false) {
remoteId = (0, checks_1.doesObjectExistInArray)(recentUsers, "email", user.email, true);
}
if (remoteId === false) {
remoteId = (0, checks_1.doesObjectExistInArray)(recentUsers, "loginName", user.loginName, true);
}
if (remoteId === false) {
remoteId = (0, checks_1.doesObjectExistInArray)(recentUsers, "email", user.email, true);
}
if (remoteId === false) {
remoteId = (0, checks_1.doesObjectExistInArray)(recentUsers, "title", user.title, true);
}
if (remoteId === false) {
alert('Error addTheseFieldsToSaveObject:\n' + JSON.stringify(user));
}
else {
remoteId = parseInt(remoteId, 10);
}
return remoteId;
}
exports.checkIfUserExistsInArray = checkIfUserExistsInArray;
//getEmailFromLoginName, checkForLoginName
/***
* d888b d88888b d888888b d88888b .88b d88. .d8b. d888888b db
* 88' Y8b 88' `~~88~~' 88' 88'YbdP`88 d8' `8b `88' 88
* 88 88ooooo 88 88ooooo 88 88 88 88ooo88 88 88
* 88 ooo 88~~~~~ 88 88~~~~~ 88 88 88 88~~~88 88 88
* 88. ~8~ 88. 88 88. 88 88 88 88 88 .88. 88booo.
* Y888P Y88888P YP Y88888P YP YP YP YP YP Y888888P Y88888P
*
*
*/
function getEmailFromLoginName(uName) {
var result = null;
if (uName.indexOf('|') > -1 && uName.indexOf('@') > 0) {
//This is an ID structure from reading in from the list: "i:0#.f|membership|clicky.mcclickster@mcclickster.onmicrosoft.com"
var uProps = uName.split('|');
var expectedEmailIndex = 2;
if (uProps.length === 3 && uProps[expectedEmailIndex].indexOf('@') > -1) {
result = uProps[expectedEmailIndex];
}
else {
alert('Not able to find email from this user name: ' + uName);
}
}
return result;
}
exports.getEmailFromLoginName = getEmailFromLoginName;
/***
* d888b d88888b d888888b db .d88b. d888b d888888b d8b db d8b db .d8b. .88b d88. d88888b
* 88' Y8b 88' `~~88~~' 88 .8P Y8. 88' Y8b `88' 888o 88 888o 88 d8' `8b 88'YbdP`88 88'
* 88 88ooooo 88 88 88 88 88 88 88V8o 88 88V8o 88 88ooo88 88 88 88 88ooooo
* 88 ooo 88~~~~~ 88 88 88 88 88 ooo 88 88 V8o88 88 V8o88 88~~~88 88 88 88 88~~~~~
* 88. ~8~ 88. 88 88booo. `8b d8' 88. ~8~ .88. 88 V888 88 V888 88 88 88 88 88 88.
* Y888P Y88888P YP Y88888P `Y88P' Y888P Y888888P VP V8P VP V8P YP YP YP YP YP Y88888P
*
*
*/
function checkForLoginName(u) {
var results = undefined;
if (u.Name) {
results = u.Name;
}
else if (u.loginName) {
results = u.loginName;
}
else if (u.LoginName) {
results = u.LoginName;
}
else if (u.email) {
results = u.email;
}
return results;
}
exports.checkForLoginName = checkForLoginName;
/***
* d88888b d8b db .d8888. db db d8888b. d88888b db db .d8888. d88888b d8888b. db db d88888b d8888b. d88888b
* 88' 888o 88 88' YP 88 88 88 `8D 88' 88 88 88' YP 88' 88 `8D 88 88 88' 88 `8D 88'
* 88ooooo 88V8o 88 `8bo. 88 88 88oobY' 88ooooo 88 88 `8bo. 88ooooo 88oobY' 88ooo88 88ooooo 88oobY' 88ooooo
* 88~~~~~ 88 V8o88 `Y8b. 88 88 88`8b 88~~~~~ 88 88 `Y8b. 88~~~~~ 88`8b 88~~~88 88~~~~~ 88`8b 88~~~~~
* 88. 88 V888 db 8D 88b d88 88 `88. 88. 88b d88 db 8D 88. 88 `88. 88 88 88. 88 `88. 88.
* Y88888P VP V8P `8888Y' ~Y8888P' 88 YD Y88888P ~Y8888P' `8888Y' Y88888P 88 YD YP YP Y88888P 88 YD Y88888P
*
*
*/
/**
*
* @param loginName 2021-03-01: should really be string | undefined but set to any to get into npmfunctions
* @param webUrl
* @param supressSaveConflict
*/
function ensureUserHere(loginName, webUrl, supressSaveConflict) {
return __awaiter(this, void 0, void 0, function () {
var thisListWeb, errMessage, user, users, e_1, helpfulErrorEnd, saveMessage;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
thisListWeb = (0, all_1.Web)(webUrl);
errMessage = null;
if (!(loginName === undefined)) return [3 /*break*/, 1];
return [2 /*return*/, undefined];
case 1:
_a.trys.push([1, 4, , 5]);
return [4 /*yield*/, thisListWeb.ensureUser(loginName)];
case 2:
user = _a.sent();
users = thisListWeb.siteUsers;
return [4 /*yield*/, users.add(user.data.LoginName)];
case 3:
_a.sent();
console.log('ensureUserHere: user', user);
console.log('ensureUserHere: users', users);
return [2 /*return*/, user];
case 4:
e_1 = _a.sent();
helpfulErrorEnd = [webUrl, loginName, null, null].join('|');
errMessage = (0, ErrorHandler_1.getHelpfullErrorV2)(e_1, true, true, [PackageConst_1.BaseErrorTrace, 'Failed', 'userServices Ensure User Here ~ 244', helpfulErrorEnd].join('|'));
saveMessage = 'Ensure Failed!\n' + loginName + "\n" + webUrl + "\n" + errMessage;
if (supressSaveConflict === true && errMessage.indexOf('Save Conflict') === 0) {
//Do nothting
}
else {
alert(saveMessage);
}
console.log(saveMessage);
return [3 /*break*/, 5];
case 5: return [2 /*return*/];
}
});
});
}
exports.ensureUserHere = ensureUserHere;
/***
* d88888b d8b db .d8888. db db d8888b. d88888b d888888b db db d88888b .d8888. d88888b db db .d8888. d88888b d8888b. .d8888.
* 88' 888o 88 88' YP 88 88 88 `8D 88' `~~88~~' 88 88 88' 88' YP 88' 88 88 88' YP 88' 88 `8D 88' YP
* 88ooooo 88V8o 88 `8bo. 88 88 88oobY' 88ooooo 88 88ooo88 88ooooo `8bo. 88ooooo 88 88 `8bo. 88ooooo 88oobY' `8bo.
* 88~~~~~ 88 V8o88 `Y8b. 88 88 88`8b 88~~~~~ 88 88~~~88 88~~~~~ `Y8b. 88~~~~~ 88 88 `Y8b. 88~~~~~ 88`8b `Y8b.
* 88. 88 V888 db 8D 88b d88 88 `88. 88. 88 88 88 88. db 8D 88. 88b d88 db 8D 88. 88 `88. db 8D
* Y88888P VP V8P `8888Y' ~Y8888P' 88 YD Y88888P YP YP YP Y88888P `8888Y' Y88888P ~Y8888P' `8888Y' Y88888P 88 YD `8888Y'
*
*
*/
function ensureTheseUsers(theseUsers, checkTheseUsers, webUrl) {
return __awaiter(this, void 0, void 0, function () {
var updateState, recentUsers, ensureLogin, i, user, localId;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
console.log('ensureTheseUsers', theseUsers);
recentUsers = checkTheseUsers;
ensureLogin = [];
//Get each user and check if they are in stateUsers: getEmailFromLoginName, checkForLoginName
if (theseUsers.length > 0) {
theseUsers.map(function (ensureUser) {
var loginName = checkForLoginName(ensureUser);
if (loginName) {
var isAlreadyInState_1 = false;
//Check if loginName of new user is already in state
recentUsers.map(function (existingUser) {
if (existingUser.loginName === loginName) {
isAlreadyInState_1 = true;
}
});
if (isAlreadyInState_1 === false) {
console.log('NEED TO ENSURE LOGIN: ', loginName);
updateState = true;
ensureUser.loginName = loginName;
ensureLogin.push(ensureUser);
}
}
});
}
if (!(ensureLogin.length > 0)) return [3 /*break*/, 5];
i = 0;
_a.label = 1;
case 1:
if (!(i < ensureLogin.length)) return [3 /*break*/, 4];
return [4 /*yield*/, ensureUserHere(ensureLogin[i].loginName, webUrl, false)];
case 2:
user = _a.sent();
localId = ensureLogin[i].id ? ensureLogin[i].id : ensureLogin[i].Id;
if (user !== undefined) {
recentUsers.push({
id: localId,
Id: localId,
remoteID: user.data.Id,
title: user.data.Title,
Title: user.data.Title,
loginName: user.data.LoginName,
email: user.data.Email,
PrincipalType: user.data.PrincipalType,
});
}
else {
recentUsers.push({
id: localId,
Id: localId,
remoteID: '',
title: '',
Title: '',
loginName: '',
email: '',
PrincipalType: undefined,
});
}
_a.label = 3;
case 3:
i++;
return [3 /*break*/, 1];
case 4:
console.log('updated state recentUsers: ', recentUsers);
_a.label = 5;
case 5: return [2 /*return*/, recentUsers];
}
});
});
}
exports.ensureTheseUsers = ensureTheseUsers;
/***
* d888b d88888b d888888b db db .d8888. d88888b d8888b. d8888b. d88888b d8888b. .88b d88. d888888b .d8888. .d8888. d888888b .d88b. d8b db .d8888.
* 88' Y8b 88' `~~88~~' 88 88 88' YP 88' 88 `8D 88 `8D 88' 88 `8D 88'YbdP`88 `88' 88' YP 88' YP `88' .8P Y8. 888o 88 88' YP
* 88 88ooooo 88 88 88 `8bo. 88ooooo 88oobY' 88oodD' 88ooooo 88oobY' 88 88 88 88 `8bo. `8bo. 88 88 88 88V8o 88 `8bo.
* 88 ooo 88~~~~~ 88 88 88 `Y8b. 88~~~~~ 88`8b 88~~~ 88~~~~~ 88`8b 88 88 88 88 `Y8b. `Y8b. 88 88 88 88 V8o88 `Y8b.
* 88. ~8~ 88. 88 88b d88 db 8D 88. 88 `88. 88 88. 88 `88. 88 88 88 .88. db 8D db 8D .88. `8b d8' 88 V888 db 8D
* Y888P Y88888P YP ~Y8888P' `8888Y' Y88888P 88 YD 88 Y88888P 88 YD YP YP YP Y888888P `8888Y' `8888Y' Y888888P `Y88P' VP V8P `8888Y'
*
* Updated function from https://github.com/pnp/pnpjs/issues/1480#issuecomment-745203843
*/
function getUserPermissions(webUrl, supressError) {
return __awaiter(this, void 0, void 0, function () {
var thisWeb, errMessage, userPerm, e_2, helpfulErrorEnd;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
thisWeb = (0, all_1.Web)(webUrl);
errMessage = null;
_a.label = 1;
case 1:
_a.trys.push([1, 3, , 4]);
return [4 /*yield*/, thisWeb.getCurrentUserEffectivePermissions()];
case 2:
userPerm = _a.sent();
console.log({
'PermissionKind.ViewListItems': sp_1.sp.web.hasPermissions(userPerm, all_2.PermissionKind.ViewListItems),
'PermissionKind.AddListItems': sp_1.sp.web.hasPermissions(userPerm, all_2.PermissionKind.AddListItems),
'PermissionKind.ManageWeb': sp_1.sp.web.hasPermissions(userPerm, all_2.PermissionKind.ManageWeb),
'PermissionKind.FullMask': sp_1.sp.web.hasPermissions(userPerm, all_2.PermissionKind.FullMask),
});
return [2 /*return*/, { permissions: userPerm, errMessage: errMessage }];
case 3:
e_2 = _a.sent();
helpfulErrorEnd = [webUrl, '', null, null].join('|');
errMessage = (0, ErrorHandler_1.getHelpfullErrorV2)(e_2, true, true, [PackageConst_1.BaseErrorTrace, 'Failed', 'getUserPerms getUserEffPerms ~ 371', helpfulErrorEnd].join('|'));
if (supressError === true && errMessage.indexOf('Save Conflict') === 0) {
alert(errMessage);
}
console.log('getUserPermissions', errMessage);
return [2 /*return*/, { users: [], errMessage: errMessage }];
case 4: return [2 /*return*/];
}
});
});
}
exports.getUserPermissions = getUserPermissions;
/***
* d888b d88888b d888888b .d8888. d888888b d888888b d88888b .d8b. d8888b. .88b d88. d888888b d8b db .d8888.
* 88' Y8b 88' `~~88~~' 88' YP `88' `~~88~~' 88' d8' `8b 88 `8D 88'YbdP`88 `88' 888o 88 88' YP
* 88 88ooooo 88 `8bo. 88 88 88ooooo 88ooo88 88 88 88 88 88 88 88V8o 88 `8bo.
* 88 ooo 88~~~~~ 88 `Y8b. 88 88 88~~~~~ 88~~~88 88 88 88 88 88 88 88 V8o88 `Y8b.
* 88. ~8~ 88. 88 db 8D .88. 88 88. 88 88 88 .8D 88 88 88 .88. 88 V888 db 8D
* Y888P Y88888P YP `8888Y' Y888888P YP Y88888P YP YP Y8888D' YP YP YP Y888888P VP V8P `8888Y'
*
*
*/
function getSiteAdmins(webUrl, supressError) {
return __awaiter(this, void 0, void 0, function () {
var thisWeb, errMessage, adminFilter, siteAdmins, e_3, helpfulErrorEnd;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
thisWeb = (0, all_1.Web)(webUrl);
errMessage = null;
adminFilter = "IsSiteAdmin eq 1";
_a.label = 1;
case 1:
_a.trys.push([1, 3, , 4]);
return [4 /*yield*/, thisWeb.siteUserInfoList.items.filter(adminFilter).get()];
case 2:
siteAdmins = _a.sent();
/**
* This was added because loginName is not retured but is in other functions so it just copies it to make it easier to resuse.
*/
siteAdmins.map(function (user) {
if (!user.loginName && user.Name) {
user.loginName = user.Name;
}
if (!user.Email && user.EMail) {
user.Email = user.EMail;
}
});
return [2 /*return*/, { users: siteAdmins, errMessage: errMessage }];
case 3:
e_3 = _a.sent();
helpfulErrorEnd = [webUrl, '', null, null].join('|');
errMessage = (0, ErrorHandler_1.getHelpfullErrorV2)(e_3, true, true, [PackageConst_1.BaseErrorTrace, 'Failed', 'getUserPerms getSiteAdmis ~ 418', helpfulErrorEnd].join('|'));
if (supressError !== true) {
alert(errMessage);
}
console.log('getSiteAdmins', errMessage);
return [2 /*return*/, { users: [], errMessage: errMessage }];
case 4: return [2 /*return*/];
}
});
});
}
exports.getSiteAdmins = getSiteAdmins;
function getSiteUsers(url, props, realPeopleOnly) {
return __awaiter(this, void 0, void 0, function () {
var thisWeb, validUserInfos, allUsers, e_4, helpfulErrorEnd;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
url = (0, urlServices_1.getFullUrlFromSlashSitesUrl)(url) + '';
thisWeb = (0, all_1.Web)(url);
validUserInfos = {
Ids: [],
Titles: [],
Names: [],
Emails: [],
Users: [],
Props: props,
errMessage: '',
};
_a.label = 1;
case 1:
_a.trys.push([1, 3, , 4]);
return [4 /*yield*/, thisWeb.siteUsers.get()];
case 2:
allUsers = _a.sent();
allUsers.map(function (u) {
var isReal = false;
//UserId is typically an object with keys: NameIdIssuer & NameId. Only getting users with that
var uId = u.UserId !== null ? u.Id : null;
var uTitle = u.Title ? u.Title : null;
var uEmail = u.Email ? u.Email : null;
var uName = u.UserPrincipalName !== null ? u.UserPrincipalName : u.LoginName;
//Through testing, found that system accounts have a LoginName but NOT UserPrincipalName
//So for "real test", I'm using UserPrincipalName to check.
if (u.UserId !== null && u.UserPrincipalName !== null && u.UserPrincipalName !== undefined) {
isReal = true;
}
if (isReal === true || realPeopleOnly === false) {
if (props.indexOf('Id') > -1 && uId !== null) {
validUserInfos.Ids.push(uId);
}
if (props.indexOf('Title') > -1 && uTitle !== null) {
validUserInfos.Titles.push(uTitle);
}
if (props.indexOf('Name') > -1 && uName !== null) {
validUserInfos.Names.push(uName);
}
if (props.indexOf('Email') > -1 && uEmail !== null) {
validUserInfos.Emails.push(uEmail);
}
validUserInfos.Users.push(u);
}
});
console.log('validUserInfos SiteUsers:', validUserInfos);
return [3 /*break*/, 4];
case 3:
e_4 = _a.sent();
helpfulErrorEnd = ['Get Site Users', '', null, null].join('|');
validUserInfos.errMessage = (0, ErrorHandler_1.getHelpfullErrorV2)(e_4, true, true, [PackageConst_1.BaseErrorTrace, 'Failed', 'getValidUsers ~ 437', helpfulErrorEnd].join('|'));
console.log('Not able to get SiteUsers', validUserInfos.errMessage);
return [3 /*break*/, 4];
case 4: return [2 /*return*/, validUserInfos];
}
});
});
}
exports.getSiteUsers = getSiteUsers;
/***
* d888b d88888b d888888b .o88b. db db d8888b. d8888b. d88888b d8b db d888888b db db .d8888. d88888b d8888b.
* 88' Y8b 88' `~~88~~' d8P Y8 88 88 88 `8D 88 `8D 88' 888o 88 `~~88~~' 88 88 88' YP 88' 88 `8D
* 88 88ooooo 88 8P 88 88 88oobY' 88oobY' 88ooooo 88V8o 88 88 88 88 `8bo. 88ooooo 88oobY'
* 88 ooo 88~~~~~ 88 8b 88 88 88`8b 88`8b 88~~~~~ 88 V8o88 88 88 88 `Y8b. 88~~~~~ 88`8b
* 88. ~8~ 88. 88 Y8b d8 88b d88 88 `88. 88 `88. 88. 88 V888 88 88b d88 db 8D 88. 88 `88.
* Y888P Y88888P YP `Y88P' ~Y8888P' 88 YD 88 YD Y88888P VP V8P YP ~Y8888P' `8888Y' Y88888P 88 YD
*
*
*/
/**
* Copied from ExStorage - gets current logged in user from site.
* @param webURL
*/
function getCurrentUser(webURL) {
return __awaiter(this, void 0, void 0, function () {
var currentUser, thisWebInstance;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
currentUser = {};
thisWebInstance = (0, all_1.Web)(webURL);
return [4 /*yield*/, thisWebInstance.currentUser.get().then(function (r) {
currentUser = {
title: r['Title'],
Title: r['Title'],
initials: r['Title'].split(" ").map(function (n) { return n[0]; }).join(""),
email: r['Email'],
id: r['Id'],
Id: r['Id'],
ID: r['Id'],
remoteID: null,
isSiteAdmin: r['IsSiteAdmin'],
LoginName: r['LoginName'],
Name: r['LoginName'],
};
// this.setState({ currentUser: currentUser });
})];
case 1:
_a.sent();
return [2 /*return*/, currentUser];
}
});
});
}
exports.getCurrentUser = getCurrentUser;
//# sourceMappingURL=userServices.js.map