1
1
import { Result } from "@js-soft/ts-utils" ;
2
2
import { CoreDate , CoreId } from "@nmshd/core-types" ;
3
- import { DevicesController , TokenContentDeviceSharedSecret , TokenController } from "@nmshd/transport" ;
3
+ import { DevicesController , PasswordProtectionCreationParameters , TokenContentDeviceSharedSecret , TokenController } from "@nmshd/transport" ;
4
4
import { Inject } from "@nmshd/typescript-ioc" ;
5
5
import { TokenDTO } from "../../../types" ;
6
- import { DeviceIdString , ISO8601DateTimeString , SchemaRepository , SchemaValidator , UseCase } from "../../common" ;
6
+ import { DeviceIdString , ISO8601DateTimeString , SchemaRepository , TokenAndTemplateCreationValidator , UseCase } from "../../common" ;
7
7
import { TokenMapper } from "../tokens/TokenMapper" ;
8
8
9
9
export interface CreateDeviceOnboardingTokenRequest {
10
10
id : DeviceIdString ;
11
11
expiresAt ?: ISO8601DateTimeString ;
12
12
profileName ?: string ;
13
+ passwordProtection ?: {
14
+ password : string ;
15
+ passwordIsPin ?: true ;
16
+ } ;
13
17
}
14
18
15
- class Validator extends SchemaValidator < CreateDeviceOnboardingTokenRequest > {
19
+ class Validator extends TokenAndTemplateCreationValidator < CreateDeviceOnboardingTokenRequest > {
16
20
public constructor ( @Inject schemaRepository : SchemaRepository ) {
17
21
super ( schemaRepository . getSchema ( "CreateDeviceOnboardingTokenRequest" ) ) ;
18
22
}
@@ -35,7 +39,8 @@ export class CreateDeviceOnboardingTokenUseCase extends UseCase<CreateDeviceOnbo
35
39
const token = await this . tokenController . sendToken ( {
36
40
content : tokenContent ,
37
41
expiresAt : expiresAt ,
38
- ephemeral : true
42
+ ephemeral : true ,
43
+ passwordProtection : PasswordProtectionCreationParameters . create ( request . passwordProtection )
39
44
} ) ;
40
45
41
46
return Result . ok ( TokenMapper . toTokenDTO ( token , true ) ) ;
0 commit comments