Skip to content

Commit 50561f8

Browse files
committed
Adjust engagement secure to return generic concrete
Also declaring the previous unsecured objects as their concrete types
1 parent 26794e9 commit 50561f8

File tree

1 file changed

+19
-6
lines changed

1 file changed

+19
-6
lines changed

src/components/engagement/engagement.service.ts

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
Range,
88
RangeException,
99
RequiredWhen,
10+
ResourceShape,
1011
SecuredList,
1112
Session,
1213
UnsecuredDto,
@@ -149,8 +150,12 @@ export class EngagementService {
149150
return engagements.map((dto) => this.secure(dto, session));
150151
}
151152

152-
secure(dto: UnsecuredDto<Engagement>, session: Session): Engagement {
153-
return this.privileges.for(session, resolveEngagementType(dto)).secure(dto);
153+
private secure<E extends Engagement>(
154+
dto: UnsecuredDto<E>,
155+
session: Session,
156+
): E {
157+
const res = resolveEngagementType(dto) as unknown as ResourceShape<E>;
158+
return this.privileges.for(session, res).secure(dto);
154159
}
155160

156161
async updateLanguageEngagement(
@@ -160,8 +165,12 @@ export class EngagementService {
160165
): Promise<LanguageEngagement> {
161166
const view: ObjectView = viewOfChangeset(changeset);
162167

163-
const previous = await this.repo.readOne(input.id, session, view);
164-
const object = this.secure(previous, session) as LanguageEngagement;
168+
const previous = (await this.repo.readOne(
169+
input.id,
170+
session,
171+
view,
172+
)) as UnsecuredDto<LanguageEngagement>;
173+
const object = this.secure(previous, session);
165174

166175
if (input.status && input.status !== previous.status) {
167176
await this.engagementRules.verifyStatusChange(
@@ -210,8 +219,12 @@ export class EngagementService {
210219
): Promise<InternshipEngagement> {
211220
const view: ObjectView = viewOfChangeset(changeset);
212221

213-
const previous = await this.repo.readOne(input.id, session, view);
214-
const object = this.secure(previous, session) as InternshipEngagement;
222+
const previous = (await this.repo.readOne(
223+
input.id,
224+
session,
225+
view,
226+
)) as UnsecuredDto<InternshipEngagement>;
227+
const object = this.secure(previous, session);
215228

216229
if (input.status && input.status !== previous.status) {
217230
await this.engagementRules.verifyStatusChange(

0 commit comments

Comments
 (0)