Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/Rowan-Paul/gwentapi. API for Rowan-Paul/GWENTcards repo old.gwentcards.net
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102'use-strict'
const express = require('express')const mongoose = require('mongoose')const bodyParser = require('body-parser')const path = require('path')const cookieParser = require('cookie-parser')const jwt = require('jsonwebtoken')require('dotenv').config()
const app = express()const port = process.env.PORT || '3000'const dbName = 'gwentcards'const secret = process.env.SECRET || 'super secret'
const User = require('./models/User')
// IMPORT ROUTESconst cardsRouter = require('./routes/api/v1/cards')const authRouter = require('./routes/api/v1/auth')const userCardsRouter = require('./routes/api/v1/collectedCards')
// MIDDLEWAREapp.use(express.static(path.join(__dirname, '../GWENTcards/build')))app.use(bodyParser.json())app.use(express.json())app.use(express.static('.'))app.use(cookieParser())
// ROUTES MIDDLEWAREapp.use('/api/v1/auth', authRouter)app.use('/api/v1/cards', cardsRouter)
function checkJWT(req, res, next) { const token = req.cookies.token
try { const decoded = jwt.verify(token, secret, { complete: true })
User.find( { email: decoded.payload.email, username: decoded.payload.username, }, (err, users) => { if (err) { throw 'Error: ' + error }
if (users.length < 1) { res.status(401).send('Error: user no longer exists') } else { const thirtyDays = 2592000000
const token = jwt.sign( { email: decoded.payload.email, username: decoded.payload.username, }, secret, { expiresIn: thirtyDays, } )
res.cookie('token', token, { httpOnly: true, secure: true, maxAge: thirtyDays, sameSite: 'Strict', secure: process.env.NODE_ENV === 'production', }) next() } } ) } catch (err) { res.status(401).send(err) }}app.use('/api/v1/users/cards', checkJWT, userCardsRouter)
// SERVE SITEapp.get('/*', function (req, res) { res.sendFile(path.join(__dirname, '../GWENTcards/build', 'index.html'))})
// CREATE SERVERconst server = app.listen(port, () => { mongoose.connect( process.env.DATABASE_URL, { useNewUrlParser: true, useUnifiedTopology: true, useFindAndModify: false, }, () => { console.log(`Server listening on port ${port}!`) } )})