mirror of
https://github.com/anatolykopyl/vk-bingo.git
synced 2026-03-26 04:44:26 +00:00
81 lines
1.8 KiB
JavaScript
81 lines
1.8 KiB
JavaScript
const express = require('express')
|
|
const session = require('express-session')
|
|
const app = express()
|
|
const {MongoClient} = require('mongodb')
|
|
const MongoStore = require('connect-mongo')
|
|
const cors = require('cors')
|
|
require('dotenv').config()
|
|
|
|
app.use(cors({
|
|
origin: [
|
|
'http://localhost:8080',
|
|
'https://localhost:8080'
|
|
],
|
|
credentials: true,
|
|
exposedHeaders: ['set-cookie']
|
|
}))
|
|
app.use(express.json())
|
|
app.use(express.urlencoded({ extended: true }))
|
|
|
|
const names = require('./names.json')
|
|
const client = new MongoClient(process.env.URI, { useUnifiedTopology: true })
|
|
|
|
app.use(session({
|
|
secret: process.env.SECRET,
|
|
resave: false,
|
|
saveUninitialized: true,
|
|
store: MongoStore.create({
|
|
client,
|
|
dbName: process.env.DB_NAME
|
|
}),
|
|
cookie: {
|
|
secure: false,
|
|
maxAge: 1000 * 60 * 60 * 24
|
|
}
|
|
}))
|
|
|
|
client.connect()
|
|
|
|
app.post('/auth', async (req, res) => {
|
|
if (req.session.loggedIn) {
|
|
res.status(200).send("Logged in")
|
|
} else {
|
|
try {
|
|
const pass = req.body.pass
|
|
if (pass && pass.toLowerCase() === process.env.PASSWORD) {
|
|
req.session.loggedIn = true
|
|
res.status(200).send("Logged in")
|
|
} else {
|
|
res.status(401).send("Wrong password")
|
|
}
|
|
} catch (e) {
|
|
console.log("Error: " + e)
|
|
res.status(500).send()
|
|
}
|
|
}
|
|
})
|
|
|
|
app.get('/card', async (req, res) => {
|
|
if (req.session.loggedIn) {
|
|
try {
|
|
let card = await client.db(process.env.DB_NAME).collection('cards').aggregate([{ $sample: { size: 1 } }]).toArray()
|
|
card = card[0]
|
|
res.status(200).send(card)
|
|
} catch (e) {
|
|
console.log("Error: " + e)
|
|
res.status(500).send()
|
|
}
|
|
} else {
|
|
res.status(403).send()
|
|
}
|
|
})
|
|
|
|
app.get('/options', async (req, res) => {
|
|
if (req.session.loggedIn) {
|
|
res.status(200).send(names)
|
|
} else {
|
|
res.status(403).send()
|
|
}
|
|
})
|
|
|
|
app.listen(process.env.PORT) |