Skip to content

Commit dad1d18

Browse files
committed
chore: improve TokenAndClaims
1 parent 9df440e commit dad1d18

File tree

4 files changed

+21
-9
lines changed

4 files changed

+21
-9
lines changed

core/protocols/dashboard/msg-types.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { JWKPublic } from "@fireproof/core-types-base";
2-
import { ReadWrite, Role, TenantLedger } from "@fireproof/core-types-protocols-cloud";
2+
import { FPCloudClaim, ReadWrite, Role, TenantLedger } from "@fireproof/core-types-protocols-cloud";
33
import type { DeviceIdCA } from "@fireproof/core-device-id";
44

55
export type AuthProvider = "github" | "google" | "fp" | "invite-per-email";
@@ -540,4 +540,5 @@ export interface ResEnsureCloudToken {
540540
readonly ledger: string;
541541
readonly expiresInSec: number;
542542
readonly expiresDate: string; // ISO string
543+
readonly claims: FPCloudClaim;
543544
}

core/types/protocols/cloud/gateway-control.ts

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,21 @@ export interface ToCloudAttachable extends Attachable {
77
readonly opts: ToCloudOpts;
88
}
99

10+
export interface ResEnsureCloudToken {
11+
readonly type: "resEnsureCloudToken";
12+
readonly cloudToken: string;
13+
readonly appId: string;
14+
readonly tenant: string;
15+
readonly ledger: string;
16+
readonly expiresInSec: number;
17+
readonly expiresDate: string; // ISO string
18+
readonly claims: FPCloudClaim;
19+
}
20+
1021
export interface TokenAndClaims {
1122
readonly token: string;
12-
readonly claims?: FPCloudClaim;
13-
// readonly exp: number;
14-
// readonly tenant?: string;
15-
// readonly ledger?: string;
16-
// };
23+
readonly claims: FPCloudClaim;
24+
readonly res?: ResEnsureCloudToken;
1725
}
1826

1927
export interface TokenStrategie {

core/types/protocols/cloud/msg-types.zod.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ export const FPCloudClaimSchema = JWTPayloadSchema.extend({
3535
email: z.email(),
3636
nickname: z.string().optional(),
3737
provider: z.enum(["github", "google"]).optional(),
38-
created: z.date(),
38+
created: z.coerce.date(),
3939
tenants: z.array(TenantClaimSchema),
4040
ledgers: z.array(LedgerClaimSchema),
4141
selected: TenantLedgerSchema,

dashboard/backend/public/ensure-cloud-token.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Result } from "@adviser/cement";
22
import { DashAuthType, ReqEnsureCloudToken, ResEnsureCloudToken } from "@fireproof/core-protocols-dashboard";
3-
import { FPCloudClaim } from "@fireproof/core-types-protocols-cloud";
3+
import { FPCloudClaimSchema } from "@fireproof/core-types-protocols-cloud";
44
import { eq, and, count } from "drizzle-orm";
55
import { sqlAppIdBinding } from "../sql/app-id-bind.js";
66
import { sqlLedgers, sqlLedgerUsers } from "../sql/ledgers.js";
@@ -9,6 +9,7 @@ import { getFPTokenContext, createFPToken, toProvider } from "../utils/index.js"
99
import { createLedger } from "./create-ledger.js";
1010
import { ensureUser } from "./ensure-user.js";
1111
import { listLedgersByUser } from "./list-ledgers-by-user.js";
12+
import { decodeJwt } from "jose";
1213

1314
function getAppIdBinding<T extends DashAuthType>(
1415
ctx: FPApiSQLCtx,
@@ -143,7 +144,8 @@ export async function ensureCloudToken(
143144
tenant: tenantId,
144145
ledger: ledgerId,
145146
},
146-
} satisfies FPCloudClaim);
147+
});
148+
const claims = FPCloudClaimSchema.parse(decodeJwt(cloudToken.token));
147149
return Result.Ok({
148150
type: "resEnsureCloudToken",
149151
cloudToken: cloudToken.token,
@@ -152,5 +154,6 @@ export async function ensureCloudToken(
152154
ledger: ledgerId,
153155
expiresInSec: cloudToken.expiresInSec,
154156
expiresDate: cloudToken.expiresDate.toISOString(),
157+
claims,
155158
});
156159
}

0 commit comments

Comments
 (0)