From f48449c46353f5c88e0290e31815bbf8068aae0e Mon Sep 17 00:00:00 2001 From: ygowthamr Date: Mon, 14 Oct 2024 21:16:20 +0530 Subject: [PATCH] Added logout functionality to stakeholder and student --- login-system/dbServer.js | 230 ++++++++++++++++++++------------------ login-system/logout.js | 6 + public/dashboard.html | 28 ++++- public/stk_dashboard.html | 107 +++++++++++------- 4 files changed, 219 insertions(+), 152 deletions(-) create mode 100644 login-system/logout.js diff --git a/login-system/dbServer.js b/login-system/dbServer.js index 036e997..a82409a 100644 --- a/login-system/dbServer.js +++ b/login-system/dbServer.js @@ -1,126 +1,144 @@ -const express = require('express') -const path = require('path') -const { upload, save, disp } = require(path.resolve(__dirname, '../file_upload/upload.js')); -const {stk_signup,stk_signin}=require('../stakeholder/login') -const {info,check} = require('../file_upload/form_db') -const { signup, signin } = require('./login'); -const rateLimiter=require('express-rate-limit') -const { approve,uploadedpapers,displaydetail }= require('../stakeholder/stk_approval') -const {display}=require('../backend/profile'); -const {stk_display}=require('../backend/stk_profile') -const { setcriteria, evaluate } = require('../stakeholder/evaluation'); -const {allot,DisplayPapers} = require('../stakeholder/allotment'); -const {Dis_fac_papers, fac_signup, fac_login, dis_mail, giverating}=require('../stakeholder/faculty') -const app = express() - -const globalLimit=rateLimiter({ - windowMs:30*60*1000, - max:100, - message:"Too amny request from same IP" -}) - -app.use(globalLimit) - -// serving pages -app.use(express.static(path.join(__dirname, '../public'))); - -app.get('/', function (req, res) { - res.sendFile(path.join(__dirname, '../public/index.html')); +const express = require("express"); +const path = require("path"); +const { upload, save, disp } = require(path.resolve( + __dirname, + "../file_upload/upload.js" +)); +const { stk_signup, stk_signin } = require("../stakeholder/login"); +const { info, check } = require("../file_upload/form_db"); +const { signup, signin } = require("./login"); +const rateLimiter = require("express-rate-limit"); +const { + approve, + uploadedpapers, + displaydetail, +} = require("../stakeholder/stk_approval"); +const { display } = require("../backend/profile"); +const { stk_display } = require("../backend/stk_profile"); +const { logout } = require("./logout"); +const { setcriteria, evaluate } = require("../stakeholder/evaluation"); +const { allot, DisplayPapers } = require("../stakeholder/allotment"); +const { + Dis_fac_papers, + fac_signup, + fac_login, + dis_mail, + giverating, +} = require("../stakeholder/faculty"); +const app = express(); + +const globalLimit = rateLimiter({ + windowMs: 30 * 60 * 1000, + max: 100, + message: "Too amny request from same IP", }); -app.get('/login.html', (req, res) => { - res.sendFile(path.join(__dirname, '../public/login.html')); -}) -app.get('/signup.html', (req, res) => { - res.sendFile(path.join(__dirname, '../public/signup.html')); -}) -app.get('/main_page.html', (req, res) => { - res.sendFile(path.join(__dirname, '../public/main_page.html')); -}) -app.get('/upload_file.html', (req, res) => { - res.sendFile(path.join(__dirname, '../public/upload_file.html')); -}) -app.get('/stk_signup.html',(req,res)=>{ - res.sendFile(path.join(__dirname, '../public/stk_signup.html')); -}) -app.get('/form_filling',async (req,res)=>{ - await check(req,res) -}) -app.get('/dashboard',async(req,res)=>{ - await display(req,res); -}) - - -app.use(express.json()) -app.use(express.static('../file_upload/uploads')) + +app.use(globalLimit); + +app.post("/logout", logout); + +// serving pages +app.use(express.static(path.join(__dirname, "../public"))); + +app.get("/", function (req, res) { + res.sendFile(path.join(__dirname, "../public/index.html")); +}); +app.get("/login.html", (req, res) => { + res.sendFile(path.join(__dirname, "../public/login.html")); +}); +app.get("/signup.html", (req, res) => { + res.sendFile(path.join(__dirname, "../public/signup.html")); +}); +app.get("/main_page.html", (req, res) => { + res.sendFile(path.join(__dirname, "../public/main_page.html")); +}); +app.get("/upload_file.html", (req, res) => { + res.sendFile(path.join(__dirname, "../public/upload_file.html")); +}); +app.get("/stk_signup.html", (req, res) => { + res.sendFile(path.join(__dirname, "../public/stk_signup.html")); +}); +app.get("/form_filling", async (req, res) => { + await check(req, res); +}); +app.get("/dashboard", async (req, res) => { + await display(req, res); +}); + +app.use(express.json()); +app.use(express.static("../file_upload/uploads")); // serving ejs files -app.set('views', path.join(__dirname, '../views')); -app.set('view engine','ejs') -app.get('/stk_papers',async(req,res)=>{ - res.render('stk_papers') -}) -app.get('/api/stk_papers',uploadedpapers) //displaying uploaded papers to the stakeholder during approval -app.get('/api/papers_detail',displaydetail) //displaying uploaded papers details to the stakeholder during approval -app.get('/allotment',DisplayPapers) //displaying papers -app.get('/fac_signup',(req,res)=>{ - dis_mail(req,res) //displaying the email of the faculty on signup page -}) - -// uploading files -app.post('/upload', upload.single('file'), async (req, res) => { - if (!req.file) { - console.error('File upload failed'); - return res.status(500).send('File upload failed'); - } - try { - console.log('File uploaded successfully:', req.file.filename); - await save(req, res); - res.sendStatus(200); - } catch (error) { - console.error('Error during upload:', error); - return res.status(500).send('Internal Server Error'); - } +app.set("views", path.join(__dirname, "../views")); +app.set("view engine", "ejs"); +app.get("/stk_papers", async (req, res) => { + res.render("stk_papers"); +}); +app.get("/api/stk_papers", uploadedpapers); //displaying uploaded papers to the stakeholder during approval +app.get("/api/papers_detail", displaydetail); //displaying uploaded papers details to the stakeholder during approval +app.get("/allotment", DisplayPapers); //displaying papers +app.get("/fac_signup", (req, res) => { + dis_mail(req, res); //displaying the email of the faculty on signup page +}); + +// uploading files +app.post("/upload", upload.single("file"), async (req, res) => { + if (!req.file) { + console.error("File upload failed"); + return res.status(500).send("File upload failed"); + } + try { + console.log("File uploaded successfully:", req.file.filename); + await save(req, res); + res.sendStatus(200); + } catch (error) { + console.error("Error during upload:", error); + return res.status(500).send("Internal Server Error"); + } }); // uploading user information to database -app.post('/info', info); +app.post("/info", info); // serving uploaded research papers to the student -app.get('/uploaded_files', disp) +app.get("/uploaded_files", disp); // creating users -app.post("/create_user",signup) -app.post("/stk_holder_signup",stk_signup) -app.post('/fac_signup',fac_signup) // registration of faculty - +app.post("/create_user", signup); +app.post("/stk_holder_signup", stk_signup); +app.post("/fac_signup", fac_signup); // registration of faculty -// login backend -app.post("/login",signin) -app.post("/stk_holder_signin",stk_signin) -app.post('/fac_login',fac_login) //login for faculty +// login backend +app.post("/login", signin); +app.post("/stk_holder_signin", stk_signin); +app.post("/fac_login", fac_login); //login for faculty // approval by stakeholder -app.get('/approval',approve) +app.get("/approval", approve); -// setting evaluation criteria -app.post('/evaluation',setcriteria) +// setting evaluation criteria +app.post("/evaluation", setcriteria); // alloting papers to the faculty -app.post('/paper_allot',allot) +app.post("/paper_allot", allot); // sending papers to the alloted faculty -app.use('/uploads', express.static(path.join(__dirname, '../file_upload/uploads'))); -app.get('/fac_papers',Dis_fac_papers) - -// saving rating given by faculty -app.post('/rating',giverating) -app.get('/result',evaluate) - -// displaying stk profile details -app.get('/stk_profile_detail',stk_display) +app.use( + "/uploads", + express.static(path.join(__dirname, "../file_upload/uploads")) +); +app.get("/fac_papers", Dis_fac_papers); + +// saving rating given by faculty +app.post("/rating", giverating); +app.get("/result", evaluate); + +// displaying stk profile details +app.get("/stk_profile_detail", stk_display); // app.get('/dis_criteria',dis_evaluation_criteria) -// starting the app on port -const port = process.env.PORT || 3000 -app.listen(port, - () => console.log(`Server Started on port http://localhost:${port}`)) \ No newline at end of file +// starting the app on port +const port = process.env.PORT || 3000; +app.listen(port, () => + console.log(`Server Started on port http://localhost:${port}`) +); diff --git a/login-system/logout.js b/login-system/logout.js new file mode 100644 index 0000000..a715449 --- /dev/null +++ b/login-system/logout.js @@ -0,0 +1,6 @@ +const logout = async (req, res) => { + localStorage.removeItem("accessToken"); + res.sendStatus(200); +}; + +module.exports = { logout }; diff --git a/public/dashboard.html b/public/dashboard.html index e99986c..6751314 100644 --- a/public/dashboard.html +++ b/public/dashboard.html @@ -27,7 +27,7 @@
  • Home
  • About Us
  • View Result
  • -
  • Log Out
  • +
  • Log Out
  • @@ -99,7 +99,27 @@ } } fetchdata() + const handleLogout = async () => { + try { + const token = localStorage.getItem('token'); // Retrieve the token from storage + const response = await fetch('/logout', { + method: 'POST', + headers: { + 'Authorization': `Bearer ${token}`, // Send the token if needed + }, + }); + if (response.ok) { + localStorage.removeItem('token'); // Remove the token from storage + window.location.href = '/'; + } else { + console.error("Logout failed:", response.statusText); + } + } catch (error) { + console.error("Logout error:", error); + } + }; + document.getElementById('logoutBtn').addEventListener('click', handleLogout); function hide() { document.body.classList.toggle("dark-theme"); const regularicon = document.getElementById('regular') @@ -152,8 +172,8 @@ const result = document.getElementById('result') result.innerHTML = "Result not declared yet!" result.style.color = "red" - result.style.padding="16px" - result.style.fontSize="18px" + result.style.padding = "16px" + result.style.fontSize = "18px" } else { console.log("an error occured") @@ -162,4 +182,4 @@ - + \ No newline at end of file diff --git a/public/stk_dashboard.html b/public/stk_dashboard.html index 1e44ac2..df09a0e 100644 --- a/public/stk_dashboard.html +++ b/public/stk_dashboard.html @@ -86,52 +86,54 @@ .card-body h4 { padding: 8px 0px; } + body.dark-mode { - background-color: #121212; - color: #ffffff; - } + background-color: #121212; + color: #ffffff; + } header.dark-mode { - background-color: #1f1f1f; + background-color: #1f1f1f; } section.dark-mode { - background-color: #2c2c2c; + background-color: #2c2c2c; } .card.dark-mode { - background-color: #3a3a3a; - color: #ffffff; + background-color: #3a3a3a; + color: #ffffff; } .card.dark-mode .btn-link { - color: #ffffff; + color: #ffffff; } .card-body.dark-mode strong { - color: rgb(193, 15, 15); + color: rgb(193, 15, 15); } + body { - position: relative; + position: relative; } -
    - +
    - +
    - -
    -
    + +
    +

    Hii...harshoxfordgkp@gmail.com

    - +
    @@ -202,15 +204,15 @@

    -
    - - + + @@ -218,28 +220,49 @@

    integrity="sha384-Fy6S3B9q64WdZWQUiU+q4/2Lc9npb8tCaSX9FK7E8HnRr0Jz8D6OP9dO5Vg3Q9ct" crossorigin="anonymous"> - + \ No newline at end of file