27 lines
1002 B
TypeScript
27 lines
1002 B
TypeScript
import type { generateAuthURIOptions } from "./types/auth";
|
|
import { v4 as uuidv4 } from "uuid";
|
|
|
|
/** ユーザー認可によるトークン取得のURIを生成します。 */
|
|
export default function generateAuthURI(options: generateAuthURIOptions) {
|
|
const session = options.session ?? uuidv4();
|
|
const uri = new URL("/api/auth", options.origin);
|
|
uri.searchParams.set("session", session);
|
|
uri.searchParams.set("client", options.name);
|
|
uri.searchParams.set("scope", options.scope.join(","));
|
|
if (options.icon)
|
|
uri.searchParams.set("icon", options.icon.toString());
|
|
if (options.about)
|
|
uri.searchParams.set("about", options.about);
|
|
if (options.callback) {
|
|
if (options.callback.insertSession)
|
|
options.callback.url.searchParams.set(options.callback.insertSession, session);
|
|
uri.searchParams.set("icon", options.callback.toString());
|
|
}
|
|
|
|
return {
|
|
/** 生成されたURI */
|
|
uri: uri,
|
|
/** session */
|
|
session: session,
|
|
};
|
|
} |