Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz> Reviewed-on: http://git.tnsu.kz/timur.gorodetskiy/request-portal/pulls/23
This commit was merged in pull request #23.
This commit is contained in:
@@ -1,3 +1,6 @@
|
||||
import { WebPartContext } from '@microsoft/sp-webpart-base';
|
||||
import { effectiveUserEmail } from '../impersonation';
|
||||
|
||||
/**
|
||||
* Кто может удалять согласующих из маршрута (и при составлении заявки, и на
|
||||
* своём шаге согласования) — сверх обычных прав инициатора/согласующего.
|
||||
@@ -12,10 +15,33 @@
|
||||
* canRemoveRow в ApprovalMatrix; здесь только сама проверка личности.
|
||||
*/
|
||||
const ROUTE_EDITOR_EMAILS: ReadonlySet<string> = new Set([
|
||||
'a.bulturukova@tnsu.kz' // Алтынай Бултурукова
|
||||
'a.bulturukova@tnsu.kz', // Алтынай Бултурукова
|
||||
'gorbenko.pavel@tnsu.kz' // Павел Горбенко — составляет свой маршрут при подаче (обкатка форм)
|
||||
]);
|
||||
|
||||
/** Может ли этот email удалять согласующих из маршрута (см. описание выше). */
|
||||
export function canEditRoute(email: string | undefined): boolean {
|
||||
return !!email && ROUTE_EDITOR_EMAILS.has(email.trim().toLowerCase());
|
||||
}
|
||||
|
||||
/**
|
||||
* Правило для ApprovalMatrix.canRemoveRow при СОСТАВЛЕНИИ заявки: редактор маршрута удаляет
|
||||
* любого согласующего, остальным кнопки удаления нет. Удаление тут чисто локальное — при
|
||||
* отправке маршрут целиком пишется из строк матрицы, поэтому записи на сервер не нужно.
|
||||
* В поданной заявке так нельзя: там своя реализация (см. RecruitingHireView).
|
||||
*/
|
||||
export function composeRemoveRowRule(email: string | undefined): (() => boolean) | undefined {
|
||||
return canEditRoute(email) ? () => true : undefined;
|
||||
}
|
||||
|
||||
/**
|
||||
* Может ли текущий пользователь править состав ИСПОЛНИТЕЛЕЙ (добавлять и удалять)
|
||||
* при составлении заявки: те же редакторы маршрута, что и для согласующих.
|
||||
* Исполнителей по умолчанию назначает маршрут из админки, заявителю они только
|
||||
* показываются; редактору маршрута матрица «Исполнение» становится редактируемой.
|
||||
* Учитывает подмену личности (effectiveUserEmail). readOnly — заявка уже не
|
||||
* редактируется (отправлена), тогда править нельзя никому.
|
||||
*/
|
||||
export function canEditExecutors(context: WebPartContext, readOnly: boolean): boolean {
|
||||
return !readOnly && canEditRoute(effectiveUserEmail(context));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user