Skip to content

Commit 825cbb6

Browse files
committed
feat: add passwordProtection to CreateDeviceOnboardingTokenRequest
1 parent 52ace05 commit 825cbb6

File tree

2 files changed

+25
-4
lines changed

2 files changed

+25
-4
lines changed

packages/runtime/src/useCases/common/Schemas.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20933,6 +20933,22 @@ export const CreateDeviceOnboardingTokenRequest: any = {
2093320933
},
2093420934
"profileName": {
2093520935
"type": "string"
20936+
},
20937+
"passwordProtection": {
20938+
"type": "object",
20939+
"properties": {
20940+
"password": {
20941+
"type": "string"
20942+
},
20943+
"passwordIsPin": {
20944+
"type": "boolean",
20945+
"const": true
20946+
}
20947+
},
20948+
"required": [
20949+
"password"
20950+
],
20951+
"additionalProperties": false
2093620952
}
2093720953
},
2093820954
"required": [

packages/runtime/src/useCases/transport/devices/CreateDeviceOnboardingToken.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,22 @@
11
import { Result } from "@js-soft/ts-utils";
22
import { CoreDate, CoreId } from "@nmshd/core-types";
3-
import { DevicesController, TokenContentDeviceSharedSecret, TokenController } from "@nmshd/transport";
3+
import { DevicesController, PasswordProtectionCreationParameters, TokenContentDeviceSharedSecret, TokenController } from "@nmshd/transport";
44
import { Inject } from "@nmshd/typescript-ioc";
55
import { TokenDTO } from "../../../types";
6-
import { DeviceIdString, ISO8601DateTimeString, SchemaRepository, SchemaValidator, UseCase } from "../../common";
6+
import { DeviceIdString, ISO8601DateTimeString, SchemaRepository, TokenAndTemplateCreationValidator, UseCase } from "../../common";
77
import { TokenMapper } from "../tokens/TokenMapper";
88

99
export interface CreateDeviceOnboardingTokenRequest {
1010
id: DeviceIdString;
1111
expiresAt?: ISO8601DateTimeString;
1212
profileName?: string;
13+
passwordProtection?: {
14+
password: string;
15+
passwordIsPin?: true;
16+
};
1317
}
1418

15-
class Validator extends SchemaValidator<CreateDeviceOnboardingTokenRequest> {
19+
class Validator extends TokenAndTemplateCreationValidator<CreateDeviceOnboardingTokenRequest> {
1620
public constructor(@Inject schemaRepository: SchemaRepository) {
1721
super(schemaRepository.getSchema("CreateDeviceOnboardingTokenRequest"));
1822
}
@@ -35,7 +39,8 @@ export class CreateDeviceOnboardingTokenUseCase extends UseCase<CreateDeviceOnbo
3539
const token = await this.tokenController.sendToken({
3640
content: tokenContent,
3741
expiresAt: expiresAt,
38-
ephemeral: true
42+
ephemeral: true,
43+
passwordProtection: PasswordProtectionCreationParameters.create(request.passwordProtection)
3944
});
4045

4146
return Result.ok(TokenMapper.toTokenDTO(token, true));

0 commit comments

Comments
 (0)