diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index 4607b2d..44afb3e 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -101,8 +101,10 @@ export default class AuthController { }) } - public async github ({ ally, auth, response }: HttpContextContract) { + public async github ({ session, ally, auth, response }: HttpContextContract) { const github = ally.use('github') + const redirected_url = await session.get('redirect') + await session.forget('redirect') if (github.accessDenied()) { return response.status(403).send({ @@ -125,7 +127,13 @@ export default class AuthController { const githubUser = await github.user() const user = await this.createUser(githubUser) await auth.use('web').login(user, true) - return response.status(200).redirect('http://localhost:3333/guestbook') + if (redirected_url) { + return response.status(200).redirect(redirected_url) + } else { + return response.status(200).send({ + user: user + }) + } } public async google ({ ally, auth, response, }: HttpContextContract) { diff --git a/package.json b/package.json index 6c9e31f..fcf78be 100755 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "@adonisjs/mail": "^7.2.1", "@adonisjs/redis": "^7.0.6", "@adonisjs/repl": "^3.1.4", - "@adonisjs/session": "^6.0.6", + "@adonisjs/session": "^6.1.1", "@adonisjs/view": "^6.0.3", "axios": "^0.21.1", "luxon": "^1.27.0", diff --git a/start/routes/auth.ts b/start/routes/auth.ts index deb99a1..16cffca 100644 --- a/start/routes/auth.ts +++ b/start/routes/auth.ts @@ -12,16 +12,17 @@ Route.group(() => { Route.get('/google/callback', 'AuthController.google') Route.get('/discord/callback', 'AuthController.discord') - Route.get('/twitter', async ({ally}) => { + Route.get('/twitter', async ({ ally}) => { return ally.use('twitter').redirect() }) - Route.get('/github', async ({ally}) => { + Route.get('/github', async ({ request, session, ally}) => { + await session.put('redirect', request.input('redirect')) return ally.use('github').redirect() }) - Route.get('/google', async ({ally}) => { + Route.get('/google', async ({ ally}) => { return ally.use('google').redirect() }) - Route.get('/discord', async ({ally}) => { + Route.get('/discord', async ({ ally}) => { return ally.use('discord').redirect() }) }).prefix('/auth') diff --git a/yarn.lock b/yarn.lock index f943204..609095f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -273,7 +273,7 @@ rev-hash "^3.0.0" source-map-support "^0.5.19" -"@adonisjs/session@^6.0.6": +"@adonisjs/session@^6.1.1": version "6.1.1" resolved "https://registry.yarnpkg.com/@adonisjs/session/-/session-6.1.1.tgz#f3ffed30ecb82168b0660d316c46ffb053566114" integrity sha512-TClg2O6wUnsoI4DhCS7F3mCRqmWO8AEh1kSrnKNl6ZqnxesLgU+30lsmMGTPfohSK/j2eU27+LpzuLFCz9Rf7Q==