@mikezimm/npmfunctions
Version:
Functions used in my SPFx webparts
334 lines • 18.4 kB
JavaScript
;
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.getUsersFromGroup = exports.allAvailableGroups = exports.buildGroupProps = void 0;
var all_1 = require("@pnp/sp/presets/all");
require("@pnp/sp/webs");
require("@pnp/sp/site-groups/web");
var checks_1 = require("../../Services/Arrays/checks");
var userServices_1 = require("../../Services/Users/userServices"); //groupUsers = await getSiteAdmins( webURL, false);
var ErrorHandler_1 = require("../../Services/Logging/ErrorHandler");
var PackageConst_1 = require("../../PackageConst");
var IMyGroupsState_1 = require("./IMyGroupsState");
function buildGroupProps(gName, description, styles, options) {
if (description === void 0) { description = ''; }
if (styles === void 0) { styles = ''; }
if (options === void 0) { options = ''; }
var optionsArray = options !== '' ? JSON.parse(options) : null;
var icon = '';
if (gName === IMyGroupsState_1.SiteAdminGroupName && options === '') {
optionsArray = [];
icon = IMyGroupsState_1.SiteAdminIconName;
}
if (options.indexOf('iconName') > -1) {
optionsArray.map(function (optObj) {
if (optObj.indexOf('iconName=') === 0) {
icon = optObj.substring(9);
}
});
}
var result = {
title: gName,
description: description,
styles: styles,
options: optionsArray,
icon: icon,
};
return result;
}
exports.buildGroupProps = buildGroupProps;
//export async function provisionTestPage( makeThisPage: IContentsGroupInfo, readOnly: boolean, setProgress: any, markComplete: any ): Promise<IServiceLog[]>{
function allAvailableGroups(webURL, myGroups, addTheseGroupsToState, setProgress) {
return __awaiter(this, void 0, void 0, function () {
var thisWebInstance, thisGroupInfos, newGroups, allGroups, errMessage, groupAdder, groupFilter, adminGroup, e_1, helpfulErrorEnd, indx, n, allUsers, guestUsers, _loop_1, _a, _b, _i, i, sortedTitles, guestGroup;
return __generator(this, function (_c) {
switch (_c.label) {
case 0:
thisWebInstance = null;
thisGroupInfos = null;
newGroups = myGroups;
allGroups = [];
newGroups.counts = [];
newGroups.titles = [];
newGroups.Ids = [];
newGroups.sortedIds = [];
newGroups.sortedGroups = [];
newGroups.isLoading = true;
errMessage = '';
_c.label = 1;
case 1:
_c.trys.push([1, 3, , 4]);
groupAdder = "\' or Title eq \'";
groupFilter = "Title eq \'" + myGroups.propTitles.join(groupAdder) + "\'";
thisWebInstance = (0, all_1.Web)(webURL);
return [4 /*yield*/, thisWebInstance.siteGroups.filter(groupFilter).get()];
case 2:
allGroups = _c.sent();
if (myGroups.groupsShowAdmins === true && myGroups.propTitles.indexOf(IMyGroupsState_1.SiteAdminGroupName) > -1) {
adminGroup = createGroupObject(IMyGroupsState_1.SiteAdminGroupName, 'Have ultimate permissions', -666, IMyGroupsState_1.SiteAdminIconName);
allGroups.push(adminGroup);
}
return [3 /*break*/, 4];
case 3:
e_1 = _c.sent();
helpfulErrorEnd = [webURL, '', null, null].join('|');
errMessage = (0, ErrorHandler_1.getHelpfullErrorV2)(e_1, true, true, [PackageConst_1.BaseErrorTrace, 'Failed', 'GroupFunctions AllAvailGroups ~ 153', helpfulErrorEnd].join('|'));
return [3 /*break*/, 4];
case 4:
console.log('allAvailableGroups thisGroupInfos:', allGroups);
indx = 0;
n = allGroups.length;
allUsers = [];
guestUsers = [];
_loop_1 = function (i) {
var thisGroup, groupUsers, hasCurrentUser_1, externalNameFilter_1, groupIndex;
return __generator(this, function (_d) {
switch (_d.label) {
case 0:
thisGroup = allGroups[i];
groupUsers = null;
if (!(myGroups.groupsShowAdmins === true && thisGroup.Title === IMyGroupsState_1.SiteAdminGroupName)) return [3 /*break*/, 2];
return [4 /*yield*/, (0, userServices_1.getSiteAdmins)(webURL, false)];
case 1:
groupUsers = _d.sent();
groupUsers.users.map(function (user) {
if (user.Email === myGroups.currentUserEmail) {
newGroups.isSiteAdmin = true;
}
});
return [3 /*break*/, 4];
case 2: return [4 /*yield*/, getUsersFromGroup(webURL, 'Name', thisGroup.Title)];
case 3:
groupUsers = _d.sent();
_d.label = 4;
case 4:
if (groupUsers.errMessage && groupUsers.errMessage.length > 0) {
errMessage = errMessage.length > 0 ? errMessage += '\n' : errMessage;
errMessage += groupUsers.errMessage;
newGroups.counts.push(null);
newGroups.titles.push(null);
}
else {
hasCurrentUser_1 = false;
externalNameFilter_1 = '.external';
groupUsers.users.map(function (user) {
if (user.Id === newGroups.userId) {
hasCurrentUser_1 = true;
}
user.isGuest = false;
/**
* This series checks for external users.
*/
if (user.IsEmailAuthenticationGuestUser === true || user.IsShareByEmailGuestUser === true) {
user.isGuest = true;
}
else if (user.LoginName && user.LoginName.indexOf(externalNameFilter_1) > -1) {
user.isGuest = true;
}
else if (user.Name && user.Name.indexOf(externalNameFilter_1) > -1) {
user.isGuest = true;
}
var userIndex = (0, checks_1.doesObjectExistInArray)(allUsers, 'Id', user.Id);
if (userIndex === false) {
allUsers.push(user);
if (user.isGuest) {
guestUsers.push(user);
}
}
});
groupIndex = (0, checks_1.doesObjectExistInArray)(newGroups.propProps, 'title', thisGroup.Title);
thisGroup.users = groupUsers.users;
thisGroup.uCount = groupUsers.users.length;
thisGroup.hasCurrentUser = hasCurrentUser_1;
thisGroup.groupProps = newGroups.propProps[groupIndex];
newGroups.counts.push(groupUsers.users.length);
newGroups.Ids.push(thisGroup.Id);
newGroups.titles.push(thisGroup.Title);
}
return [2 /*return*/];
}
});
};
_a = [];
for (_b in allGroups)
_a.push(_b);
_i = 0;
_c.label = 5;
case 5:
if (!(_i < _a.length)) return [3 /*break*/, 8];
i = _a[_i];
return [5 /*yield**/, _loop_1(i)];
case 6:
_c.sent();
_c.label = 7;
case 7:
_i++;
return [3 /*break*/, 5];
case 8:
if (errMessage === '' && allGroups.length === 0) {
errMessage = 'This site/web does not have any subsites that you can see.';
}
if (errMessage.length === 0) {
newGroups.isLoading = false;
}
sortedTitles = [];
newGroups.propTitles.map(function (title) {
if (newGroups.titles.indexOf(title) > -1) {
sortedTitles.push(title);
}
});
// if ( myGroups.propTitles.indexOf( SiteAdminGroupName ) > -1 ) { sortedTitles.push( SiteAdminGroupName ) ; }
sortedTitles.map(function (title) {
allGroups.map(function (group) {
if (group.Title === title) {
newGroups.sortedIds.push(group.Id);
newGroups.sortedGroups.push(group);
}
});
});
newGroups.titles = sortedTitles;
/**
* Alphabetical sort user arrays
*/
allUsers.sort(function (a, b) { return a['Title'].localeCompare(b['Title']); });
guestUsers.sort(function (a, b) { return a['Title'].localeCompare(b['Title']); });
/**
* Add Guest Tab and users if there are any
*/
if (myGroups.groupsShowGuests === true && guestUsers.length > 0) {
guestGroup = createGroupObject(IMyGroupsState_1.GuestsGroupName, 'External users in these groups', -999, IMyGroupsState_1.GuestsIconName);
guestGroup.uCount = guestUsers.length;
guestGroup.users = guestUsers;
guestGroup.OwnerTitle = 'See group owners';
allGroups.push(guestGroup);
newGroups.sortedIds.push(guestGroup.Id);
newGroups.sortedGroups.push(guestGroup);
newGroups.propTitles.push(IMyGroupsState_1.GuestsGroupName);
newGroups.titles.push(IMyGroupsState_1.GuestsGroupName);
newGroups.Ids.push(guestGroup.Id);
newGroups.counts.push(guestGroup.uCount);
}
newGroups.groups = allGroups;
newGroups.allUsers = allUsers;
newGroups.guestUsers = guestUsers;
console.log('allAvailableGroups newGroups:', newGroups);
addTheseGroupsToState(newGroups, errMessage);
return [2 /*return*/, { myGroups: newGroups, errMessage: errMessage }];
}
});
});
}
exports.allAvailableGroups = allAvailableGroups;
function createGroupObject(title, desc, Id, iconName) {
var groupProps = {
title: title,
description: desc,
styles: '',
options: [],
icon: iconName,
};
var thisGroup = {
users: [],
Title: title,
Description: desc,
AllowMembersEditMembership: false,
AllowRequestToJoinLeave: false,
AutoAcceptRequestToJoinLeave: false,
Id: Id,
IsHiddenInUI: false,
LoginName: '',
OnlyAllowMembersViewMembership: false,
OwnerTitle: title,
PrincipalType: null,
RequestToJoinLeaveEmailSetting: '',
isLoading: null,
uCount: 0,
hasCurrentUser: null,
groupProps: groupProps,
};
return thisGroup;
}
function getUsersFromGroup(webURL, titleOrId, thisGroup) {
return __awaiter(this, void 0, void 0, function () {
var thisWebInstance, users, errMessage, e_2, e_3, e_4, helpfulErrorEnd;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
thisWebInstance = null;
users = [];
errMessage = '';
_a.label = 1;
case 1:
_a.trys.push([1, 10, , 11]);
thisWebInstance = (0, all_1.Web)(webURL);
if (!(titleOrId === 'Name')) return [3 /*break*/, 6];
_a.label = 2;
case 2:
_a.trys.push([2, 4, , 5]);
return [4 /*yield*/, thisWebInstance.siteGroups.getByName(thisGroup).users()];
case 3:
users = _a.sent();
return [3 /*break*/, 5];
case 4:
e_2 = _a.sent();
console.log('You may not have access to view members from this list: ', thisGroup);
return [3 /*break*/, 5];
case 5: return [3 /*break*/, 9];
case 6:
_a.trys.push([6, 8, , 9]);
return [4 /*yield*/, thisWebInstance.siteGroups.getById(thisGroup).users()];
case 7:
users = _a.sent();
return [3 /*break*/, 9];
case 8:
e_3 = _a.sent();
console.log('You may not have access to view members from this list: ', thisGroup);
return [3 /*break*/, 9];
case 9: return [3 /*break*/, 11];
case 10:
e_4 = _a.sent();
helpfulErrorEnd = [webURL, '', null, null].join('|');
errMessage = (0, ErrorHandler_1.getHelpfullErrorV2)(e_4, true, true, [PackageConst_1.BaseErrorTrace, 'Failed', 'GroupFunctions getUsersFromGroup ~ 352', helpfulErrorEnd].join('|'));
return [3 /*break*/, 11];
case 11: return [2 /*return*/, { users: users, errMessage: errMessage }];
}
});
});
}
exports.getUsersFromGroup = getUsersFromGroup;
//# sourceMappingURL=GroupFunctions.js.map