diff options
Diffstat (limited to 'backend/index.js')
-rw-r--r-- | backend/index.js | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/backend/index.js b/backend/index.js new file mode 100644 index 0000000..769a692 --- /dev/null +++ b/backend/index.js @@ -0,0 +1,108 @@ +const { Prisma, PrismaClient } = require('@prisma/client') +const express = require('express') +const app = express() +const port = 12000 +const prisma= new PrismaClient(); +const session = require('express-session'); +app.set('view engine', 'ejs'); +app.use(express.json()) +app.use(session({ + resave: false, + saveUninitialized: true, + secret: 'SECRET' +})); +const passport = require('passport'); +var userProfile; + +app.use(passport.initialize()); +app.use(passport.session()); + +app.set('view engine', 'ejs'); + +app.get('/success', (req, res) => res.redirect("")); +app.get('/error', (req, res) => res.send("error logging in")); + +passport.serializeUser(function(user, cb) { + cb(null, user); +}); + +passport.deserializeUser(function(obj, cb) { + cb(null, obj); +}); + +const GoogleStrategy = require('passport-google-oauth').OAuth2Strategy; +const GOOGLE_CLIENT_ID = '259045734642-9n1mgstp1hp30ponmum0piobc8pd8m35.apps.googleusercontent.com'; +const GOOGLE_CLIENT_SECRET = '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'; +passport.use(new GoogleStrategy({ + clientID: GOOGLE_CLIENT_ID, + clientSecret: GOOGLE_CLIENT_SECRET, + callbackURL: "http://localhost:12000/auth/google/callback/" + }, + function(accessToken, refreshToken, profile, done) { + userProfile=profile; + return done(null, userProfile); + } +)); + +app.get('/auth/google', + passport.authenticate('google', { scope : ['profile', 'email'] })); + +app.get('/auth/google/callback', + passport.authenticate('google', { failureRedirect: '/error' }), + function(req, res) { + // Successful authentication, redirect success. + res.redirect('/success'); + }); + + +app.get('/', function(req, res) { + res.render('pages/auth.ejs'); +}); +app.get('/', (req, res) => { + res.send('Hello World!') +}) +app.get('/courses/:param', async (req, res) => { + var request_parameter = req.params.param ; + try { + switch (request_parameter) { + case 'all': + var response = await prisma.course.findMany(); + res.send(response); + break; + default: + var response = await prisma.course.findMany({ + where:{ + id: { + equals: parseInt(request_parameter) + } + } + }); + res.send(response); + break; + } + } catch (error) { + res.status(500); + res.send({"error" : "Nu au fost gasite rezultate"}); + } +}) +app.post('/courses', async (req, res) => { + console.log(req.body); + res.status(200); + try { + const request = prisma.course.create({ + data:{ + title: req.body.title, + description: req.body.description, + author:{ + connect: {id: req.body.user_id} + } + } + }) + } catch (error) { + + } +}) + +app.listen(port, () => { + console.log(`Example app listening on port ${port}`) +}) |