Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 40 additions & 36 deletions src/app/api/slack_redirect/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,45 +5,49 @@ import { NextRequest } from 'next/server'
const errRedir = (err: any) => redirect('/slack-error?err=' + err.toString())

export async function GET(request: NextRequest) {
// Try to authenticate the user first
const code = request.nextUrl.searchParams.get('code')
if (!code) {
return redirect('/slack-error?err=Missing authorization code')

const redirectUri = await getRedirectUri()

const exchangeUrl = `https://slack.com/api/openid.connect.token?code=${code}&client_id=${process.env.SLACK_CLIENT_ID}&client_secret=${process.env.SLACK_CLIENT_SECRET}&redirect_uri=${redirectUri}`

console.log('exchanging by posting to', exchangeUrl)

const res = await fetch(exchangeUrl, { method: 'POST' })

if (res.status !== 200) return errRedir('Bad Slack OpenId response status')

let data

try {
data = await res.json()
} catch (e) {
console.error(e, await res.text())

throw e
}

if (!data || !data.ok) {
console.error(data)

return errRedir('Bad Slack OpenID response')
}

try {
const redirectUri = await getRedirectUri()

const exchangeUrl = `https://slack.com/api/openid.connect.token?code=${code}&client_id=${process.env.SLACK_CLIENT_ID}&client_secret=${process.env.SLACK_CLIENT_SECRET}&redirect_uri=${redirectUri}`
console.log('exchanging by posting to', exchangeUrl)

const res = await fetch(exchangeUrl, { method: 'POST' })

if (res.status !== 200) return errRedir('Bad Slack OpenId response status')

let data
try {
data = await res.json()
} catch (e) {
console.error(e, await res.text())
throw e
}
if (!data || !data.ok) {
console.error(data)
return errRedir('Bad Slack OpenID response')
}

try {
await createSlackSession(data.id_token)
console.log('created slack session!! :)))))')
return redirect('/signpost')
} catch (e: any) {
if (e.toString().includes('Sign-ups are disabled')) {
return errRedir(e)
}
throw e
}
} catch (error) {
return errRedir(error)
await createSlackSession(data.id_token)

console.log('cretaed slack session!! :)))))')
} catch (e) {
return errRedir(e)
}

// const userInfoUrl = `https://slack.com/api/openid.connect.userInfo`;

// const userInfo = await fetch(userInfoUrl, {

// headers: { Authorization: `Bearer ${data.access_token}` },

// }).then((d) => d.json());

redirect('/signpost')
}