637e51d7f9
Tests / frontend-test (push) Successful in 1m24s
Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz> Reviewed-on: http://git.tnsu.kz/timur.gorodetskiy/request-portal/pulls/23
48 lines
3.4 KiB
TypeScript
48 lines
3.4 KiB
TypeScript
import { WebPartContext } from '@microsoft/sp-webpart-base';
|
|
import { effectiveUserEmail } from '../impersonation';
|
|
|
|
/**
|
|
* Кто может удалять согласующих из маршрута (и при составлении заявки, и на
|
|
* своём шаге согласования) — сверх обычных прав инициатора/согласующего.
|
|
*
|
|
* Пока фиксированный email одного человека (Алтынай Бултурукова, начальник
|
|
* отдела подбора и адаптации персонала) — группы SharePoint для этого ещё
|
|
* нет, заведут отдельно (см. [[request-portal-approver-field-rights]] в
|
|
* памяти). ВРЕМЕННО, как и reportsAccess.ts.
|
|
*
|
|
* Подключено только в 3 формах рекрутинга (Заявка на подбор, Заявка на прием,
|
|
* Реферальная рекомендация) — каждая форма сама решает, передавать ли
|
|
* canRemoveRow в ApprovalMatrix; здесь только сама проверка личности.
|
|
*/
|
|
const ROUTE_EDITOR_EMAILS: ReadonlySet<string> = new Set([
|
|
'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));
|
|
}
|