mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-07-04 01:20:36 +00:00
d6b100108a
## Description: Implement refresh for JWTs. Related to https://github.com/openfrontio/infra/pull/26 ## Please complete the following: - [x] I have added screenshots for all UI updates - [x] I confirm I have thoroughly tested these changes and take full responsibility for any bugs introduced - [x] I understand that submitting code with bugs that could have been caught through manual testing blocks releases and new features for all contributors --------- Co-authored-by: Scott Anderson <662325+scottanderson@users.noreply.github.com>
49 lines
1.1 KiB
TypeScript
49 lines
1.1 KiB
TypeScript
import { z } from "zod";
|
|
import { base64urlToUuid } from "./Base64";
|
|
|
|
export const RefreshResponseSchema = z.object({
|
|
token: z.string(),
|
|
});
|
|
export type RefreshResponse = z.infer<typeof RefreshResponseSchema>;
|
|
|
|
export const TokenPayloadSchema = z.object({
|
|
jti: z.string(),
|
|
sub: z
|
|
.string()
|
|
.refine(
|
|
(val) => {
|
|
const uuid = base64urlToUuid(val);
|
|
return uuid != null;
|
|
},
|
|
{
|
|
message: "Invalid base64-encoded UUID",
|
|
},
|
|
)
|
|
.transform((val) => {
|
|
const uuid = base64urlToUuid(val);
|
|
if (!uuid) throw new Error("Invalid base64 UUID");
|
|
return uuid;
|
|
}),
|
|
iat: z.number(),
|
|
iss: z.string(),
|
|
aud: z.string(),
|
|
exp: z.number(),
|
|
rol: z
|
|
.string()
|
|
.optional()
|
|
.transform((val) => val.split(",")),
|
|
});
|
|
export type TokenPayload = z.infer<typeof TokenPayloadSchema>;
|
|
|
|
export const UserMeResponseSchema = z.object({
|
|
user: z.object({
|
|
id: z.string(),
|
|
avatar: z.string(),
|
|
username: z.string(),
|
|
global_name: z.string(),
|
|
discriminator: z.string(),
|
|
locale: z.string(),
|
|
}),
|
|
});
|
|
export type UserMeResponse = z.infer<typeof UserMeResponseSchema>;
|