import { createOAuthCallbackHandler, githubConfig } from "veryfront/oauth";
import type { TokenStore, OAuthTokens, OAuthState } from "veryfront/oauth";
const redisTokenStore: TokenStore = {
async getTokens(serviceId) {
const data = await redis.get(`oauth:tokens:${serviceId}`);
return data ? JSON.parse(data) : null;
},
async setTokens(serviceId, tokens) {
await redis.set(`oauth:tokens:${serviceId}`, JSON.stringify(tokens));
},
async clearTokens(serviceId) {
await redis.del(`oauth:tokens:${serviceId}`);
},
async getState(state) {
const data = await redis.get(`oauth:state:${state}`);
return data ? JSON.parse(data) : null;
},
async setState(state) {
await redis.set(`oauth:state:${state.state}`, JSON.stringify(state));
},
async clearState(state) {
await redis.del(`oauth:state:${state}`);
},
};
export const GET = createOAuthCallbackHandler(githubConfig, {
tokenStore: redisTokenStore,
});