Files
FrozenFriendsYume/packages/backend/built/server/api/endpoints/miauth/gen-token.js
T
2026-07-26 18:25:37 +09:00

78 lines
1.7 KiB
JavaScript

import define from "../../define.js";
import { AccessTokens } from "../../../../models/index.js";
import { genId } from "../../../../misc/gen-id.js";
import { secureRndstr } from "../../../../misc/secure-rndstr.js";
export const meta = {
tags: [
"auth"
],
requireCredential: true,
secure: true,
res: {
type: "object",
optional: false,
nullable: false,
properties: {
token: {
type: "string",
optional: false,
nullable: false
}
}
}
};
export const paramDef = {
type: "object",
properties: {
session: {
type: "string",
nullable: true
},
name: {
type: "string",
nullable: true
},
description: {
type: "string",
nullable: true
},
iconUrl: {
type: "string",
nullable: true
},
permission: {
type: "array",
uniqueItems: true,
items: {
type: "string"
}
}
},
required: [
"session",
"permission"
]
};
export default define(meta, paramDef, async (ps, user)=>{
// Generate access token
const accessToken = secureRndstr(32);
const now = new Date();
// Insert access token doc
await AccessTokens.insert({
id: genId(),
createdAt: now,
lastUsedAt: now,
session: ps.session,
userId: user.id,
token: accessToken,
hash: accessToken,
name: ps.name,
description: ps.description,
iconUrl: ps.iconUrl,
permission: ps.permission
});
return {
token: accessToken
};
});