flagon-io/g1t

public

Where people and agents ship software together. The open-source git platform for the whole job: issues, agents, checks and deploys to the edge.

g1t/apps/web/app/lib/github.server.ts

23 lines948 bytesCodeBlame
1import { env } from "cloudflare:workers";
2
3import { githubAppClient, githubSignInClient } from "@g1t/contracts";
4
5import { instrumented } from "./perf.server";
6
7/** Signing in with GitHub, kept by the identity service. */
8export const githubSignIn = githubSignInClient(instrumented("identity", env.IDENTITY));
9/** g1t's GitHub App: installations, imports and mirrors, kept by integrations. */
10export const githubApp = githubAppClient(instrumented("integrations", env.INTEGRATIONS));
11
12/**
13 * Whether this g1t offers signing in with GitHub. False when no app is
14 * configured, or identity cannot say: the button is then left out.
15 */
16export async function githubSignInEnabled(): Promise<boolean> {
17 return githubSignIn.enabled().catch(() => false);
18}
19
20/** Where GitHub returns after sign-in: registered on the app, exactly. */
21export function callbackUrl(request: Request): string {
22 return `${new URL(request.url).origin}/auth/github/callback`;
23}