From 84913b0c5645071615cc113011d5696548905ef9 Mon Sep 17 00:00:00 2001 From: xAlpharax <42233094+xAlpharax@users.noreply.github.com> Date: Sun, 10 Dec 2023 08:39:32 +0200 Subject: Merged the front-end and back-end dev environments into master. Massive W for the team. Full Google Auth + other Prisma quirks and functionalities. Changes to be committed: new file: .gitattributes new file: backend/index.js new file: backend/login_pages/index.js new file: backend/package-lock.json new file: backend/package.json new file: backend/populate_prisma.js new file: backend/prisma/schema.prisma new file: backend/views/pages/auth.ejs new file: backend/views/pages/success.ejs new file: frontend/README.md new file: frontend/package-lock.json new file: frontend/package.json new file: frontend/public/favicon.ico new file: frontend/public/index.html new file: frontend/public/logo192.png new file: frontend/public/logo1922.png new file: frontend/public/logo512.png new file: frontend/public/manifest.json new file: frontend/public/robots.txt new file: frontend/src/App.css new file: frontend/src/App.js new file: frontend/src/App.test.js new file: frontend/src/Footer.css new file: frontend/src/Footer.js new file: frontend/src/components/Navbar.js new file: frontend/src/components/NavbarElements.js new file: frontend/src/components/logo192.png new file: frontend/src/index.css new file: frontend/src/index.js new file: frontend/src/logo.svg new file: frontend/src/pages/about.js new file: frontend/src/pages/contact.css new file: frontend/src/pages/contact.js new file: frontend/src/pages/courses.css new file: frontend/src/pages/courses.js new file: frontend/src/pages/index.css new file: frontend/src/pages/index.js new file: frontend/src/reportWebVitals.js new file: frontend/src/setupTests.js --- backend/index.js | 108 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 backend/index.js (limited to 'backend/index.js') 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}`) +}) -- cgit v1.2.3