1
0
Fork 0
llama-bot-web-interface/functions/src/services/discordOauth.ts
developomp 695f75d363 backend structure update
- removed unnecessry data from express user
- changed database arguments and return types
- made `/api/user-data` get data from db instead of express user
2022-02-27 10:44:42 +09:00

68 lines
1.5 KiB
TypeScript

import { logger } from "firebase-functions"
import passport from "passport"
import PassportDiscord from "passport-discord"
import database from "../API/database"
import secret from "../secret.json"
import config from "../config.json"
passport.serializeUser((user, done) => {
// `user.id` will be used in `passport.deserializeUser`
done(null, user.id)
})
passport.deserializeUser(async (id: string, done) => {
try {
const result = await database.findUser(id)
if (result.success) {
done(null, { id })
} else {
done(new Error("Failed to get user from database"))
}
} catch (error) {
logger.error("Error deserializing user", error.message)
done(error)
}
})
passport.use(
new PassportDiscord.Strategy(
{
clientID: secret.clientID,
clientSecret: secret.clientSecret,
callbackURL:
(process.env.FUNCTIONS_EMULATOR === "true"
? "http://localhost:5000"
: "https://llama.developomp.com") +
config.pathPrefix +
"/auth",
scope: config.scopes,
},
async (_accessToken, _refreshToken, profile, done) => {
try {
const result = await database.findUser(profile.id)
const data = {
avatar: profile.avatar || undefined,
discriminator: profile.discriminator,
id: profile.id,
username: profile.username,
}
if (result.success) {
await database.updateUser(data)
} else {
database.newUser(data)
}
done(null, { id: profile.id })
} catch (error) {
logger.error("Error creating a user", error)
}
}
)
)