fix: свежие «свои» заявки при отладочной подмене личности
Tests / frontend-test (push) Successful in 5m42s
Tests / frontend-test (push) Successful in 5m42s
Search искал заявки подменённого сотрудника, а REST-довесок свежих черновиков — заявки реальной учётки, поэтому только что созданные черновики под подменой не находились нигде. Довесок теперь берёт Id подменённого сотрудника. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -22,7 +22,7 @@ import {
|
||||
REQUEST_STATUS,
|
||||
siteOrigin,
|
||||
} from '../../shared/approval';
|
||||
import { effectiveUserEmail } from '../../shared/impersonation';
|
||||
import { effectiveUserEmail, getImpersonatedEmail } from '../../shared/impersonation';
|
||||
import { DATA_SITE_URL } from '../../shared/config';
|
||||
import { IAssignee, IExecutedStep, IMyRequest } from './models/IMyRequest';
|
||||
import { parseAuthorOwsUser } from './parseAuthorOwsUser';
|
||||
@@ -115,6 +115,17 @@ export function currentUserEmail(context: WebPartContext): string {
|
||||
return effectiveUserEmail(context).toLowerCase();
|
||||
}
|
||||
|
||||
// Id автора «своих» заявок на сайте — для REST-довесков (фильтр AuthorId). По той
|
||||
// же причине, что currentUserEmail: при отладочной подмене это подменённый
|
||||
// сотрудник — иначе Search искал бы его заявки, а довесок — заявки реальной
|
||||
// учётки, и его свежие черновики не находились бы нигде (индекс их ещё не видит).
|
||||
// Без подмены — реальный пользователь через currentuser (без лишнего ensureUser).
|
||||
async function ownAuthorIdFor(context: WebPartContext, siteUrl: string): Promise<number> {
|
||||
const impersonatedEmail = getImpersonatedEmail();
|
||||
if (!impersonatedEmail) return currentUserIdFor(context, siteUrl);
|
||||
return ensureUserIdFor(context, siteUrl, `i:0#.f|membership|${impersonatedEmail.toLowerCase()}`);
|
||||
}
|
||||
|
||||
function normalizeSiteUrl(url: string): string {
|
||||
return url.replace(/\/+$/, '').toLowerCase();
|
||||
}
|
||||
@@ -1195,7 +1206,7 @@ async function getOwnRowsForType(context: WebPartContext, type: IRequestType): P
|
||||
// Кешированный Id (см. shared/approval/siteUser.ts): эта функция зовётся в
|
||||
// цикле по типам заявок, и без кеша тот же GET /_api/web/currentuser уходил
|
||||
// бы столько раз, сколько у портала типов.
|
||||
const myId = await currentUserIdFor(context, target.siteUrl);
|
||||
const myId = await ownAuthorIdFor(context, target.siteUrl);
|
||||
|
||||
const rows = (await sp.web
|
||||
.getList(target.listId)
|
||||
@@ -1247,7 +1258,7 @@ async function getRecentlyChangedOwnRowsForType(context: WebPartContext, type: I
|
||||
|
||||
try {
|
||||
const sp = spForSite(target.siteUrl, context);
|
||||
const myId = await currentUserIdFor(context, target.siteUrl);
|
||||
const myId = await ownAuthorIdFor(context, target.siteUrl);
|
||||
const cutoffIso = new Date(Date.now() - RECENT_MS).toISOString();
|
||||
|
||||
const rows = (await sp.web
|
||||
|
||||
Reference in New Issue
Block a user