style: apply biome formatting to OAuth service and tests
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -45,7 +45,14 @@ export function createAuthorizationCode(
|
|||||||
const expiresAt = new Date(Date.now() + 10 * 60 * 1000); // 10 minutes
|
const expiresAt = new Date(Date.now() + 10 * 60 * 1000); // 10 minutes
|
||||||
|
|
||||||
db.insert(oauthCodes)
|
db.insert(oauthCodes)
|
||||||
.values({ code, clientId, codeChallenge, codeChallengeMethod, redirectUri, expiresAt })
|
.values({
|
||||||
|
code,
|
||||||
|
clientId,
|
||||||
|
codeChallenge,
|
||||||
|
codeChallengeMethod,
|
||||||
|
redirectUri,
|
||||||
|
expiresAt,
|
||||||
|
})
|
||||||
.run();
|
.run();
|
||||||
|
|
||||||
return { code };
|
return { code };
|
||||||
@@ -57,7 +64,11 @@ export async function exchangeCode(
|
|||||||
codeVerifier: string,
|
codeVerifier: string,
|
||||||
clientId: string,
|
clientId: string,
|
||||||
redirectUri: string,
|
redirectUri: string,
|
||||||
): Promise<{ accessToken: string; refreshToken: string; expiresIn: number } | null> {
|
): Promise<{
|
||||||
|
accessToken: string;
|
||||||
|
refreshToken: string;
|
||||||
|
expiresIn: number;
|
||||||
|
} | null> {
|
||||||
const record = db
|
const record = db
|
||||||
.select()
|
.select()
|
||||||
.from(oauthCodes)
|
.from(oauthCodes)
|
||||||
@@ -92,14 +103,24 @@ function generateTokens(
|
|||||||
const accessToken = randomBytes(32).toString("hex");
|
const accessToken = randomBytes(32).toString("hex");
|
||||||
const refreshToken = randomBytes(32).toString("hex");
|
const refreshToken = randomBytes(32).toString("hex");
|
||||||
|
|
||||||
const accessTokenHash = createHash("sha256").update(accessToken).digest("hex");
|
const accessTokenHash = createHash("sha256")
|
||||||
const refreshTokenHash = createHash("sha256").update(refreshToken).digest("hex");
|
.update(accessToken)
|
||||||
|
.digest("hex");
|
||||||
|
const refreshTokenHash = createHash("sha256")
|
||||||
|
.update(refreshToken)
|
||||||
|
.digest("hex");
|
||||||
|
|
||||||
const expiresAt = new Date(Date.now() + 3600 * 1000); // 1 hour
|
const expiresAt = new Date(Date.now() + 3600 * 1000); // 1 hour
|
||||||
const refreshExpiresAt = new Date(Date.now() + 30 * 24 * 60 * 60 * 1000); // 30 days
|
const refreshExpiresAt = new Date(Date.now() + 30 * 24 * 60 * 60 * 1000); // 30 days
|
||||||
|
|
||||||
db.insert(oauthTokens)
|
db.insert(oauthTokens)
|
||||||
.values({ accessTokenHash, refreshTokenHash, clientId, expiresAt, refreshExpiresAt })
|
.values({
|
||||||
|
accessTokenHash,
|
||||||
|
refreshTokenHash,
|
||||||
|
clientId,
|
||||||
|
expiresAt,
|
||||||
|
refreshExpiresAt,
|
||||||
|
})
|
||||||
.run();
|
.run();
|
||||||
|
|
||||||
return { accessToken, refreshToken, expiresIn: 3600 };
|
return { accessToken, refreshToken, expiresIn: 3600 };
|
||||||
@@ -127,7 +148,11 @@ export async function refreshAccessToken(
|
|||||||
db: Db = prodDb,
|
db: Db = prodDb,
|
||||||
refreshToken: string,
|
refreshToken: string,
|
||||||
clientId: string,
|
clientId: string,
|
||||||
): Promise<{ accessToken: string; refreshToken: string; expiresIn: number } | null> {
|
): Promise<{
|
||||||
|
accessToken: string;
|
||||||
|
refreshToken: string;
|
||||||
|
expiresIn: number;
|
||||||
|
} | null> {
|
||||||
const tokenHash = createHash("sha256").update(refreshToken).digest("hex");
|
const tokenHash = createHash("sha256").update(refreshToken).digest("hex");
|
||||||
|
|
||||||
const record = db
|
const record = db
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { createHash, randomBytes } from "node:crypto";
|
|
||||||
import { beforeEach, describe, expect, it } from "bun:test";
|
import { beforeEach, describe, expect, it } from "bun:test";
|
||||||
|
import { createHash, randomBytes } from "node:crypto";
|
||||||
import {
|
import {
|
||||||
createAuthorizationCode,
|
createAuthorizationCode,
|
||||||
exchangeCode,
|
exchangeCode,
|
||||||
|
|||||||
Reference in New Issue
Block a user