import { createGitHubOAuthConfig, createHelpers } from 'jsr:@deno/kv-oauth';
import { STATUS_CODE, StatusCode } from 'jsr:@std/http/status';
import { oauthCallback } from './handler/oauth-callback.ts';
import { getSession } from './utils/db.ts';
export const ALLOWED_USER = Deno.env.get('ALLOWED_GITHUB_USER');
const OAUTH_REDIRECT_URI = Deno.env.get('OAUTH_REDIRECT_URI');
if (!ALLOWED_USER) {
console.error('🚨 ALLOWED_GITHUB_USER not set!');
}
if (!OAUTH_REDIRECT_URI) {
console.error('🚨 OAUTH_REDIRECT_URI not set!');
}
export const oauthConfig = createGitHubOAuthConfig({
redirectUri: OAUTH_REDIRECT_URI,
});
export const {
signIn,
getSessionId,
signOut,
handleCallback,
} = createHelpers(oauthConfig);
const withCorsHeaders = (
message: string,
status: StatusCode = 200,
): Response => {
const body = JSON.stringify({ message });
const headers = new Headers();
headers.set('Content-Type', 'application/json');
headers.set('Access-Control-Allow-Origin', 'https://telesto.github.io');
headers.set('Access-Control-Allow-Credentials', 'true');
headers.set('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
headers.set('Access-Control-Allow-Headers', 'Content-Type');
return new Response(body, {
status,
headers,
});
};