Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 35 additions & 33 deletions backend/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ import fs from 'fs';
import path from 'path';
// jwt
import cookieParser from "cookie-parser";
import cors from "cors";

import { FileMetadataServerDAO } from "./DAO/FileMetadataServerDAO";
import { UserDAO } from "./DAO/UserDAO";
import bodyParser from 'body-parser';
import { brotliDecompress } from "zlib";

const cors = require('cors');
const bcrypt = require('bcrypt');
const jwt = require('jsonwebtoken');
//file handlding
Expand Down Expand Up @@ -37,18 +37,19 @@ declare global {
const app = express();
const ms = new MainServer()

app.use(function (req, res, next) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, delete');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
if (req.method == 'OPTIONS') {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, PUT, POST, DELETE, OPTIONS');
res.setHeader('Access-Control-Allow-Headers', 'content-type');
res.status(200).end();
}
next();
});
// app.use(function (req, res, next) {
// res.setHeader('Access-Control-Allow-Origin', '*');
// res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, delete');
// res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
// if (req.method == 'OPTIONS') {
// res.setHeader('Access-Control-Allow-Origin', '*');
// res.setHeader('Access-Control-Allow-Methods', 'GET, PUT, POST, DELETE, OPTIONS');
// res.setHeader('Access-Control-Allow-Headers', 'content-type');
// res.status(200).end();
// }
// next();
// });
app.use(cors());
app.use(cookieParser());
app.use(express.json());
app.use(express.urlencoded({extended: false}));
Expand Down Expand Up @@ -180,11 +181,7 @@ app.get('/', (req, res) => {
})

function generateAccessToken(payload:any) {
<<<<<<< Updated upstream
return jwt.sign(payload, 'secretKey', {expiresIn: '30s'});
=======
return jwt.sign(payload, 'secretKey', {expiresIn: '95s'});
>>>>>>> Stashed changes
return jwt.sign(payload, 'secretKey', {expiresIn: '20s'});
}

app.post('/token', (req, res) => {
Expand Down Expand Up @@ -216,14 +213,15 @@ app.get('/', (req, res) => {
if (!validpw) {
return res.status(400).json("invalid pw");
} else {
const payload = {email: user.email}
const payload = {any: result.id}
const accessToken = generateAccessToken(payload);
const refreshToken = jwt.sign(payload, 'refreshSecretKey');

console.log("Refresh Token: "+refreshToken);
console.log("*************************************")
console.log("AcessToken:", accessToken)
console.log("Refresh Token: ",refreshToken);
console.log("UserID",result.id);

files=[{userID:user.id}];
files=[{userID:result.id}];
// refreshTokens.push(refreshToken);
console.log(files)
udb.addRefreshToken(result.id, refreshToken, (rows: any)=> {
Expand All @@ -238,6 +236,7 @@ app.get('/', (req, res) => {
// refreshTokens = refreshTokens.filter((token:any) => token !== req.body.token)

udb.removeRefreshToken(req.body.id, (rows: any) => {

return res.status(204).json("logout successful, refresh token deleted");
})

Expand All @@ -246,31 +245,34 @@ app.get('/', (req, res) => {

// put below programs to other server (file managing)
// sample usage of authenticateToken function
app.get('/fetchFiles', authenticateToken, (req, res) => {
app.post('/fetchFiles', authenticateToken, (req, res) => {
// @ts-ignore
<<<<<<< Updated upstream
res.json(files.filter(files => files.email === req.payload.email))
=======
// files=[{userID:result.id}];


res.json(files.filter(files => req.userID === req.payload.userID))
>>>>>>> Stashed changes
//res.json(files.filter(files => req.userID === req.payload.userID))
})

function authenticateToken(req:Request, res:Response, next:NextFunction) {

const authHeader = req.headers['authorization'];

console.log(req.body);

const token = authHeader && authHeader.split(' ')[1]
if(token == null) return res.sendStatus(401)

// console.log("THIS IS WHT",authHeader)
// console.log("WTF this is ",token);
if(token === null) return res.sendStatus(401)

jwt.verify(token, 'secretKey', (err:any, payload:any) => {
if(err) return res.sendStatus(403);
// @ts-ignore
req.payload = payload
<<<<<<< Updated upstream
=======

console.log('fetch files test pass')
>>>>>>> Stashed changes
next();
})


}
9 changes: 2 additions & 7 deletions backend/src/test.rest
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,5 @@ Content-Type: application/json
}

### fetch posts
GET http://localhost:3002/fetchFiles
<<<<<<< Updated upstream
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImFkYW1AdGVzdC5jb20iLCJpYXQiOjE2NzgwODQyNTEsImV4cCI6MTY3ODA4NDI4MX0.U37UwEd0gqU49jqNMv7x4-vj5xAIHMJWkRld0LGGl4U
=======
Authorization: Bearer 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE2NzgxODI0MzEsImV4cCI6MTY3ODE4MjUyNn0.uVB4p7jkIpMOiJb5ziwYbbM6eoDduIf38Zpy0sVgNcw
>>>>>>> Stashed changes

POST http://localhost:3002/fetchFiles
Authorization: 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhbnkiOiJsZXozbTQybC02dDlvN3ciLCJpYXQiOjE2NzgyNDQ3ODgsImV4cCI6MTY3ODI0NDgwOH0.ha9UDSy9Diz8Y8pW82Gz1tbvR7U-Z74HWYdcaAwOXOU'
122 changes: 51 additions & 71 deletions frontend/frontend.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,34 +48,12 @@ function userRegister(){
}

function userLogin(){
// let userName = document.querySelector("#username").value
// let passWord = document.querySelector("#pass").value;
// resourcesServer({
// method:'get',
// url:"authenticateUser",
// userName:userName,
// passWord:passWord
// }).then(res=>{
// if(res.status >= 200 && res.status < 300){
// console.log(res.data.toString())
// loginUser=userName
// }
// }).catch(function (error){
// console.log(error.message)
// })
let userName = document.querySelector("#username").value;
let passWord = document.querySelector("#pass").value;


let password = document.querySelector("#pass").value;
let email = document.querySelector("#email").value;
<<<<<<< Updated upstream
if(userName==="Derek Liu"&&passWord==="112233"&&email==="Derek.liu@gmail.com"){
window.alert("Log in successful !!");
}else{
window.alert("You need make a accunt");
}

=======
console.log(email+"\n"+password);
await resourcesServer({
resourcesServer({
method: 'post',
url: "login",
data:{
Expand All @@ -87,29 +65,62 @@ function userLogin(){
const userID = res.data.userID;
const accessToken = res.data.accessToken;
const refreshToken = res.data.refreshToken;

localStorage.setItem('userID', userID);
localStorage.setItem('accessToken', accessToken);
localStorage.setItem('refreshToken', refreshToken);
document.querySelector("#loginStatus").innerHTML="login success";
// console.log("#############");
// console.log("accessToken")
// console.log(userID);
// console.log(accessToken);
// console.log("refreshtoken");
// console.log(refreshToken);
// console.log("#############");
console.log("#############");
console.log("accessToken")
console.log(accessToken);
console.log("refreshtoken");
console.log(refreshToken);
console.log("#############");
loginUser = true;
}
}).catch(function (error){
document.querySelector("#loginStatus").innerHTML="login failed"+"<br>"+error.message
})


>>>>>>> Stashed changes
/*
if(userName==="Derek Liu"&&passWord==="112233"&&email==="Derek.liu@gmail.com"){
window.alert("Log in successful !!");
}else{
window.alert("You need make a accunt");
}
*/
}
function fetchFiles(){
if (loginUser == false){
alert("please login");
}else {
//await updateToken();
// const userID = localStorage.getItem('userID');
const token = localStorage.getItem('accessToken');
// console.log("This is test:",userID);
console.log("This is test:",token);
// const config = {
// headers:{Authorization: `Bearer ${token}` }
// };
// console.log(config);
resourcesServer({
method: 'POST',
url: "fetchFiles",
headers:{Authorization: `Bearer ${token}` }

}).then(res => {
if (res.status >= 200 && res.status < 300) {
console.log("fetchFiles succeed! \n"+res.data);
}
}).catch(function (error) {
console.log("fetchFiles failed! \n"+error.message);

})
}
}




/*
* ====================================================================
* File Handling part
Expand Down Expand Up @@ -197,38 +208,8 @@ function deleteFile(){
}

}
<<<<<<< Updated upstream
=======


async function fetchFiles(){
if (loginUser == false){
alert("please login");
}else {
//await updateToken();
const userID = localStorage.getItem('userID');
const token = localStorage.getItem('accessToken');
console.log("This is test:",userID);
console.log("This is test:",token);

resourcesServer({
method: 'get',
url: "fetchFiles",
params:{
payload:{userID:userID},
headers:{Authorization: `Bearer ${token}`}
}

}).then(res => {
if (res.status >= 200 && res.status < 300) {
console.log("fetchFiles succeed! \n"+res.data);
}
}).catch(function (error) {
console.log("fetchFiles failed! \n"+error.message);
})
}
}

/*
* function for updating access token before accessing resources
* */
Expand All @@ -237,7 +218,7 @@ function updateToken(){
const refreshToken = localStorage.getItem('refreshToken');
const userID = localStorage.getItem('userID');
resourcesServer({
method: 'post',
method: 'get',
url: "token",
data:{
userID:userID,
Expand All @@ -247,13 +228,12 @@ function updateToken(){
if(res.status === 200){
const accessToken = res.data.accessToken;
localStorage.setItem('accessToken', accessToken);
// console.log("Updated access Token");
// console.log(accessToken);
// console.log("#############");
console.log("Updated access Token");
console.log(accessToken);
console.log("#############");
}
}).catch(function (error){
alert("Token failed, please try login again"+"\n"+error.message);
})

}
>>>>>>> Stashed changes
10 changes: 10 additions & 0 deletions frontend/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,15 @@
<div class = "button">
<button class="userButton" id = "login" onclick="userLogin()">login</button>
</div>

<div class = "button">
<button class="userButton" id = "updateToken" onclick="updateToken()">update token</button>
</div>

<div class = "button">
<button class="userButton" id = "fetchFiles" onclick="fetchFiles()">fetch files</button>
</div>

<div class = "userStatus" id = "loginStatus">
not login yet
</div>
Expand Down Expand Up @@ -60,6 +69,7 @@
<div class = "fileStatus" id = "uploadFileStatus">
<br>
</div>


</div>
<hr>
Expand Down
Loading