mirror of
https://github.com/documenso/documenso.git
synced 2025-11-13 00:03:33 +10:00
fix: mask recipient tokens for non-owners
This commit is contained in:
38
packages/lib/utils/mask-recipient-tokens-for-document.ts
Normal file
38
packages/lib/utils/mask-recipient-tokens-for-document.ts
Normal file
@ -0,0 +1,38 @@
|
||||
import type { User } from '@documenso/prisma/client';
|
||||
import type { DocumentWithRecipients } from '@documenso/prisma/types/document-with-recipient';
|
||||
|
||||
export type MaskRecipientTokensForDocumentOptions<T extends DocumentWithRecipients> = {
|
||||
document: T;
|
||||
user?: User;
|
||||
token?: string;
|
||||
};
|
||||
|
||||
export const maskRecipientTokensForDocument = <T extends DocumentWithRecipients>({
|
||||
document,
|
||||
user,
|
||||
token,
|
||||
}: MaskRecipientTokensForDocumentOptions<T>) => {
|
||||
const maskedRecipients = document.Recipient.map((recipient) => {
|
||||
if (document.userId === user?.id) {
|
||||
return recipient;
|
||||
}
|
||||
|
||||
if (recipient.email === user?.email) {
|
||||
return recipient;
|
||||
}
|
||||
|
||||
if (recipient.token === token) {
|
||||
return recipient;
|
||||
}
|
||||
|
||||
return {
|
||||
...recipient,
|
||||
token: '',
|
||||
};
|
||||
});
|
||||
|
||||
return {
|
||||
...document,
|
||||
Recipient: maskedRecipients,
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user