diff --git a/.env.example b/.env.example index e86e133..2255843 100644 --- a/.env.example +++ b/.env.example @@ -34,7 +34,7 @@ DATABASE_URL= GITHUB_CLIENT_ID= GITHUB_CLIENT_SECRET= -GITHUB_CLIENT_CALLBACK= +GITHUB_DEFAULT_CALLBACK= GOOGLE_CLIENT_ID= GOOGLE_CLIENT_SECRET= diff --git a/src/modules/auth/controllers/githubRequest.controller.ts b/src/modules/auth/controllers/githubRequest.controller.ts index 9607e42..d3d332c 100644 --- a/src/modules/auth/controllers/githubRequest.controller.ts +++ b/src/modules/auth/controllers/githubRequest.controller.ts @@ -2,12 +2,14 @@ import { Context } from "elysia"; import { returnReadResponse } from "../../../helpers/callback/httpResponse"; import { githubRequestService } from "../services/http/githubRequest.service"; -export const githubRequestController = async (ctx: Context) => { - const loginUrl = await githubRequestService(); +export const githubRequestController = async ( + ctx: Context & { query: { callback?: string } } +) => { + const loginUrl = await githubRequestService(ctx.query.callback); return returnReadResponse( ctx.set, 200, "Login URL generated successfully", - String(loginUrl) + loginUrl ); }; diff --git a/src/modules/auth/providers/github.provider.ts b/src/modules/auth/providers/github.provider.ts index c231ac8..cd94a61 100644 --- a/src/modules/auth/providers/github.provider.ts +++ b/src/modules/auth/providers/github.provider.ts @@ -1,10 +1,11 @@ import { GitHub } from "arctic"; -export const githubProvider = () => { - const redirectURI = `${process.env.APP_PROTOCOL}://${process.env.APP_DOMAIN}${process.env.GITHUB_CLIENT_CALLBACK}`; +export const githubProvider = ( + callbackURI = `${process.env.APP_PROTOCOL}://${process.env.APP_DOMAIN}${process.env.GITHUB_DEFAULT_CALLBACK}` +) => { return new GitHub( process.env.GITHUB_CLIENT_ID!, process.env.GITHUB_CLIENT_SECRET!, - redirectURI + callbackURI ); }; diff --git a/src/modules/auth/services/http/githubRequest.service.ts b/src/modules/auth/services/http/githubRequest.service.ts index d19f069..82a27c4 100644 --- a/src/modules/auth/services/http/githubRequest.service.ts +++ b/src/modules/auth/services/http/githubRequest.service.ts @@ -2,9 +2,9 @@ import * as arctic from "arctic"; import { githubProvider } from "../../providers/github.provider"; import { AppError } from "../../../../helpers/error/instances/app"; -export const githubRequestService = async () => { +export const githubRequestService = async (callbackURI?: string) => { try { - const github = githubProvider(); + const github = githubProvider(callbackURI); const state = arctic.generateState(); const scopes = ["user:email"]; const url = github.createAuthorizationURL(state, scopes);