Skip to content

Commit e5e5089

Browse files
committed
Update OwnerCondition to support { creator: LinkTo }
1 parent 3c1f89e commit e5e5089

File tree

2 files changed

+17
-7
lines changed

2 files changed

+17
-7
lines changed

src/common/secured-property.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ export type SecuredKeys<Dto extends Record<string, any>> = ConditionalKeys<
3333

3434
export type MaybeSecured<Dto> = Dto | UnsecuredDto<Dto>;
3535

36+
export type MaybeSecuredProp<T> = T | Secured<T>;
37+
3638
/**
3739
* Converts a DTO to unwrap its secured properties.
3840
* Non-secured properties are left as is.

src/components/authorization/policies/conditions/owner.condition.ts

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
11
import { Logger } from '@nestjs/common';
22
import { Query } from 'cypher-query-builder';
33
import { inspect, InspectOptionsStylized } from 'util';
4-
import { ID, isIdLike, MaybeSecured, ResourceShape, Secured } from '~/common';
4+
import {
5+
ID,
6+
isIdLike,
7+
MaybeSecured,
8+
MaybeSecuredProp,
9+
ResourceShape,
10+
unwrapSecured,
11+
} from '~/common';
12+
import { type LinkTo } from '~/core/resources';
513
import { User } from '../../../user/dto';
614
import {
715
AsCypherParams,
@@ -12,7 +20,7 @@ import {
1220
const CQL_VAR = 'requestingUser';
1321

1422
export interface HasCreator {
15-
creator: ID | Secured<ID>;
23+
creator: MaybeSecuredProp<ID | LinkTo<'User'>>;
1624
}
1725

1826
class OwnerCondition<
@@ -29,11 +37,11 @@ class OwnerCondition<
2937
return (object as MaybeSecured<User>).id;
3038
}
3139
const o = object as MaybeSecured<HasCreator>;
32-
return !o.creator
33-
? undefined
34-
: isIdLike(o.creator)
35-
? o.creator
36-
: o.creator.value;
40+
const creator = unwrapSecured(o.creator);
41+
if (!creator) {
42+
return undefined;
43+
}
44+
return isIdLike(creator) ? creator : creator.id;
3745
})();
3846
if (!creator) {
3947
Logger.warn(

0 commit comments

Comments
 (0)