Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions packages/transport/src/modules/tokens/TokenController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,10 @@ export class TokenController extends TransportController {
passwordProtection
});

if (!input.ephemeral) {
await this.tokens.create(token);
}

return token;
}

Expand Down
16 changes: 8 additions & 8 deletions packages/transport/src/modules/tokens/local/EmptyToken.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
import { ISerializable, Serializable, serialize, type, validate } from "@js-soft/ts-serval";
import { CoreDate, CoreId, ICoreDate, ICoreId } from "@nmshd/core-types";
import { serialize, type, validate } from "@js-soft/ts-serval";
import { CoreDate, ICoreDate } from "@nmshd/core-types";
import { CryptoSecretKey, ICryptoSecretKey } from "@nmshd/crypto";
import { nameof } from "ts-simple-nameof";
import { CoreSynchronizable, ICoreSynchronizable } from "../../../core";
import { IPasswordProtection, PasswordProtection } from "../../../core/types/PasswordProtection";
import { TokenReference } from "../transmission/TokenReference";

export interface IEmptyToken extends ISerializable {
id: ICoreId;
export interface IEmptyToken extends ICoreSynchronizable {
secretKey: ICryptoSecretKey;
expiresAt: ICoreDate;
passwordProtection: IPasswordProtection;
}

@type("EmptyToken")
export class EmptyToken extends Serializable implements IEmptyToken {
@validate()
@serialize()
public id: CoreId;
export class EmptyToken extends CoreSynchronizable implements IEmptyToken {
public override readonly technicalProperties = ["@type", "@context", nameof<EmptyToken>((r) => r.secretKey), nameof<EmptyToken>((r) => r.expiresAt)];
public override readonly userdataProperties = [nameof<EmptyToken>((r) => r.passwordProtection)];

@validate()
@serialize()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { CoreDate, ICoreDate } from "@nmshd/core-types";

export interface ISendEmptyTokenParameters extends ISerializable {
expiresAt: ICoreDate;
ephemeral: boolean;
}

@type("SendEmptyTokenParameters")
Expand All @@ -11,6 +12,10 @@ export class SendEmptyTokenParameters extends Serializable implements ISendEmpty
@serialize()
public expiresAt: CoreDate;

@validate()
@serialize()
public ephemeral: boolean;

public static from(value: ISendEmptyTokenParameters): SendEmptyTokenParameters {
return this.fromAny(value);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,7 @@ describe("TokenController", function () {

test("should send an empty token", async function () {
const expiresAt = CoreDate.utc().add({ hours: 1 });
const sentToken = await sender.tokens.sendEmptyToken({
expiresAt
});
const sentToken = await sender.tokens.sendEmptyToken({ expiresAt, ephemeral: true });

expect(sentToken).toBeDefined();
});
Expand Down
Loading