Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz> Reviewed-on: http://git.tnsu.kz/timur.gorodetskiy/request-portal/pulls/7
This commit was merged in pull request #7.
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
import { WebPartContext } from '@microsoft/sp-webpart-base';
|
||||
|
||||
/**
|
||||
* ОТЛАДОЧНАЯ подмена «текущего пользователя»: портал ведёт себя так, будто им
|
||||
* пользуется указанный сотрудник. Нужна, чтобы проверять маршруты и права
|
||||
* согласующего (например, «карту СКУД правит начальник КДП» в обходном листе),
|
||||
* не выпрашивая учётку у каждого участника маршрута.
|
||||
*
|
||||
* Значение задаётся в свойствах веб-части (property pane, см.
|
||||
* RequestPortalWebPart.getPropertyPaneConfiguration) и живёт на уровне модуля —
|
||||
* иначе его пришлось бы протаскивать пропсами через всё дерево до каждой формы.
|
||||
*
|
||||
* ЧТО ЭТО МЕНЯЕТ: только то, ЧЕЙ email портал отправляет как инициатора при
|
||||
* планировании маршрута и по какому пользователю фильтрует «свои» заявки и
|
||||
* очередь согласования.
|
||||
*
|
||||
* ЧЕГО ЭТО НЕ МЕНЯЕТ: прав доступа. Запись в SharePoint по-прежнему идёт под
|
||||
* реальной учёткой (Author/Editor в списках — настоящий пользователь), токен к
|
||||
* approval-route API тоже настоящий. То есть подмена не даёт увидеть то, к чему
|
||||
* нет доступа, но ПОЗВОЛЯЕТ принять решение за чужой шаг согласования — поэтому
|
||||
* на бою поле должно быть пустым (см. предупреждающую полосу в RequestPortal).
|
||||
*/
|
||||
|
||||
let impersonatedEmail = '';
|
||||
|
||||
/** Вызывается веб-частью на каждый render — свойство могли поменять в панели. */
|
||||
export function setImpersonatedEmail(email: string | undefined): void {
|
||||
impersonatedEmail = (email || '').trim();
|
||||
}
|
||||
|
||||
/** Заданная подмена ('' — подмены нет). Для предупреждающей полосы в интерфейсе. */
|
||||
export function getImpersonatedEmail(): string {
|
||||
return impersonatedEmail;
|
||||
}
|
||||
|
||||
/** Email, под которым портал работает: подменённый, если задан, иначе — из токена. */
|
||||
export function effectiveUserEmail(context: WebPartContext): string {
|
||||
return impersonatedEmail || context.pageContext.user.email || '';
|
||||
}
|
||||
Reference in New Issue
Block a user