Допустим, у меня есть базовая сущность ShopsEntity
, в которой есть куча полей и секретное свойство:
@ObjectType()
class ShopsEntity {
@Field()
name: string;
@Field()
rating: string;
@Field()
secret: string;
}
Я не хочу, чтобы секретное свойство было сериализовано, если только пользовательимеет определенную роль, определенную с помощью Управление доступом к гнездам (этот модуль позволяет размещать только RoleGuards на самих преобразователях, что означает, что для каждой роли мне потребуются разные маршруты).
Итак, послезапросив к одной и той же конечной точке с разными уровнями аутентификации, администратор получит:
{
"name": "name",
"rating": "rating",
"secret": "secret"
}
, а обычный запрашивающий пользователь получит:
{
"name": "name",
"rating": "rating"
}
Существует ли декларативный способ, которым яздесь можно обеспечить безопасность на уровне свойств или лучшее решение, имеющее отдельные DTO для каждого уровня безопасности?