Как получить все дочерние сайты в семействе сайтов, если вошедший в систему пользователь не имеет разрешений на семейство сайтов в sharepoint онлайн с помощью JSOM?
Когда я пытаюсь получить все дочерние веб-сайты в семействе сайтов в Sharepoint online с помощью jsom, если вошедший в систему пользователь не имеет разрешений для семейства веб-сайтов, я не могу получить все дочерние сайты.
Но я могу получить все дочерние сайты в семействе сайтов, если вошедший в систему пользователь имеет разрешения для семейства сайтов.
Я хочу, даже если у пользователя есть разрешения на семейство сайтов, чтобы получить все дочерние сайты в семействе сайтов в Sharepoint online с помощью JavaScript.
2 ответа
Это невозможно, потому что данные - это то, что защищено от того, к чему у пользователя есть доступ. Возможность повышения привилегий на стороне клиента была бы серьезным нарушением безопасности. Обычно люди обычно либо дают очень маленькие разрешения всем группам пользователей, либо используют собственный API-интерфейс ретрансляции и учетную запись службы, у которой есть разрешения.
getAllWebs: function (siteUrl, success, error) {
var ctx = new SP.ClientContext(siteUrl);
var web = ctx.get_site().get_rootWeb();
var result = [];
var level = 0;
var getAllWebsInner = function (web, result, success, error, isChild, siteUrl) {
level++;
var ctx = web.get_context();
var webs = web.get_webs();
ctx.load(webs, 'Include(Title,Url,Webs)');
ctx.executeQueryAsync(
function () {
for (var i = 0; i < webs.get_count(); i++) {
var web = webs.getItemAtIndex(i);
if (isChild)
siteHierarchy.subSiteInfo.push({ Title: web.get_title(), SiteUrl: web.get_url(), ParentUrl: siteUrl });
else
siteHierarchy.siteInfo.push({ Title: web.get_title(), SiteUrl: web.get_url(), Subsite: [] });
result.push(web);
if (web.get_webs().get_count() > 0) {
getAllWebsInner(web, result, success, error, true, web.get_url());
}
}
level--;
if (level == 0 && success) {
success(result);
}
},
error);
};
getAllWebsInner(web, result, success, error, false, siteUrl);
}
Основано на ответе "Вадима Гремячева" по адресу https://sharepoint.stackexchange.com/questions/130403/most-efficient-way-to-get-all-sub-sites-under-a-site-collection-sub-site-using-j.