v1/Server/api/auth.js
2020-08-02 16:29:00 -04:00

74 lines
1.8 KiB
JavaScript

module.exports = (R, $) => {
R.post('/api/auth/token', async (ctx) => {
const { token } = ctx.request.body
if (token == null || token === '') {
ctx.body = { err: 'token_missing' }
ctx.status = 400
return
}
if (ctx.session.accessToken === undefined || ctx.session.expiresAt < Date.now()) {
const data = await $.discord.getAuthToken(token)
ctx.session.accessToken = data.access_token
ctx.session.refreshToken = data.refresh_token
ctx.session.expiresAt = Date.now() + (ctx.expires_in || 1000 * 60 * 60 * 24)
}
const user = await $.discord.getUser(ctx.session.accessToken)
ctx.session.userId = user.id
ctx.session.avatarHash = user.avatar
ctx.body = {
id: user.id,
avatar: user.avatar,
username: user.username,
discriminator: user.discriminator,
}
})
R.get('/api/auth/user', async (ctx) => {
if (ctx.session.accessToken === undefined) {
ctx.body = { err: 'not_logged_in' }
ctx.status = 401
return
}
const user = await $.discord.getUser(ctx.session.accessToken)
ctx.session.userId = user.id
ctx.session.avatarHash = user.avatar
ctx.body = {
id: user.id,
avatar: user.avatar,
username: user.username,
discriminator: user.discriminator,
}
})
R.get('/api/auth/redirect', (ctx) => {
const url = $.discord.getAuthUrl()
if (ctx.query.url === '✔️') {
ctx.body = { url }
return
}
ctx.redirect(url)
})
R.post('/api/auth/logout', (ctx) => {
ctx.session = null
})
R.get('/api/oauth/bot', (ctx) => {
const url = $.discord.getBotJoinUrl()
if (ctx.query.url === '✔️') {
ctx.body = { url }
return
}
ctx.redirect(url)
})
R.get('/api/oauth/bot/callback', (ctx) => {})
}