Skip to content
Snippets Groups Projects
Commit c19d16cf authored by Sami Spets's avatar Sami Spets
Browse files

Added mongoose and started to build config route

parent 26e6f2bf
No related branches found
No related tags found
No related merge requests found
Pipeline #15089 passed
......@@ -37,6 +37,11 @@
"safe-buffer": "^5.1.1"
}
},
"bluebird": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
"integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA=="
},
"body-parser": {
"version": "1.19.0",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
......@@ -54,6 +59,11 @@
"type-is": "~1.6.17"
}
},
"bson": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/bson/-/bson-1.1.1.tgz",
"integrity": "sha512-jCGVYLoYMHDkOsbwJZBCqwMHyH4c+wzgI9hG7Z6SZJRXWr+x58pdIbm2i9a/jFGCkRJqRUr8eoI7lDWa0hTkxg=="
},
"buffer-equal-constant-time": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
......@@ -285,6 +295,11 @@
"safe-buffer": "^5.0.1"
}
},
"kareem": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.1.tgz",
"integrity": "sha512-l3hLhffs9zqoDe8zjmb/mAN4B8VT3L56EUvKNqLFVs9YlFA+zx7ke1DO8STAdDyYNkeSo1nKmjuvQeI12So8Xw=="
},
"lodash.includes": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
......@@ -353,6 +368,73 @@
"mime-db": "1.40.0"
}
},
"mongodb": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.3.2.tgz",
"integrity": "sha512-fqJt3iywelk4yKu/lfwQg163Bjpo5zDKhXiohycvon4iQHbrfflSAz9AIlRE6496Pm/dQKQK5bMigdVo2s6gBg==",
"requires": {
"bson": "^1.1.1",
"require_optional": "^1.0.1",
"safe-buffer": "^5.1.2"
}
},
"mongoose": {
"version": "5.7.3",
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.7.3.tgz",
"integrity": "sha512-CKCCCAhFnJRtmdmver8Ud9/NZ9m7D2H/xLgmrcL6cb9D4nril/idL8lsWWpBsJI81AOCVsktiZJ4X4vfo2S0fw==",
"requires": {
"bson": "~1.1.1",
"kareem": "2.3.1",
"mongodb": "3.3.2",
"mongoose-legacy-pluralize": "1.0.2",
"mpath": "0.6.0",
"mquery": "3.2.2",
"ms": "2.1.2",
"regexp-clone": "1.0.0",
"safe-buffer": "5.1.2",
"sift": "7.0.1",
"sliced": "1.0.1"
},
"dependencies": {
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
}
}
},
"mongoose-legacy-pluralize": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz",
"integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ=="
},
"mpath": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/mpath/-/mpath-0.6.0.tgz",
"integrity": "sha512-i75qh79MJ5Xo/sbhxrDrPSEG0H/mr1kcZXJ8dH6URU5jD/knFxCVqVC/gVSW7GIXL/9hHWlT9haLbCXWOll3qw=="
},
"mquery": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.2.tgz",
"integrity": "sha512-XB52992COp0KP230I3qloVUbkLUxJIu328HBP2t2EsxSFtf4W1HPSOBWOXf1bqxK4Xbb66lfMJ+Bpfd9/yZE1Q==",
"requires": {
"bluebird": "3.5.1",
"debug": "3.1.0",
"regexp-clone": "^1.0.0",
"safe-buffer": "5.1.2",
"sliced": "1.0.1"
},
"dependencies": {
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"requires": {
"ms": "2.0.0"
}
}
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
......@@ -485,6 +567,25 @@
"util-deprecate": "~1.0.1"
}
},
"regexp-clone": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz",
"integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw=="
},
"require_optional": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz",
"integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==",
"requires": {
"resolve-from": "^2.0.0",
"semver": "^5.1.0"
}
},
"resolve-from": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz",
"integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c="
},
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
......@@ -543,6 +644,16 @@
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
"integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
},
"sift": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/sift/-/sift-7.0.1.tgz",
"integrity": "sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g=="
},
"sliced": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz",
"integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E="
},
"statuses": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
......
......@@ -14,9 +14,11 @@
"author": "Nicolas Pope",
"license": "ISC",
"dependencies": {
"body-parser": "^1.19.0",
"express": "^4.16.4",
"express-ws": "^4.0.0",
"jsonwebtoken": "^8.5.1",
"mongoose": "^5.7.3",
"msgpack5": "^4.2.1",
"passport": "^0.4.0",
"passport-google-oauth20": "^2.0.0"
......
const checkIfLoggedIn = async () => {
const token = window.localStorage.getItem('token')
console.log(token)
if(!token){
console.log("You need to login")
const containerDiv = document.getElementById('container');
containerDiv = login;
//User has a token saved in the browser
}else{
//validate that token
......@@ -10,14 +12,14 @@ const checkIfLoggedIn = async () => {
method: 'POST',
headers: {'Authorization': token}
})
console.log(response)
console.log('RESPONSE', response)
//Token is valid
if(response.status === 200){
console.log("SUCCESS")
/*
Most likely it will render a new HTML file
*/
document.getElementById('container').innerHTML = "<p>Salainen sivu</p>"
renderThumbnails()
}
}
}
......
......@@ -3,14 +3,19 @@ const app = express();
const expressWs = require('express-ws')(app);
const Peer = require('./peer.js');
const passport = require('passport');
const passportSetup = require('./passport/passport');
const passportSetup = require('./passport/passport'); //Without this, the app doesn't know passports google strategy
const jwt = require('jsonwebtoken');
const keys = require('./passport/keys')
const mongoose = require('mongoose')
const config = require('./utils/config')
const User = require('./models/users')
const Configuration = require('./models/configs')
const bodyParser = require('body-parser')
// ---- INDEXES ----------------------------------------------------------------
app.use(passport.initialize());
app.use(express.static(__dirname + './../public'));
console.log(__dirname)
app.use(bodyParser.json( ))
passport.serializeUser((user, done) => {
......@@ -21,6 +26,14 @@ passport.deserializeUser((userDataFromCookie, done) => {
done(null, userDataFromCookie);
})
mongoose.connect(config.MONGODB_URI, { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => {
console.log('Connected to MongoDB');
})
.catch((err) => {
console.log(err);
})
let peer_by_id = {};
//let uri_to_peer = {};
let peer_uris = {};
......@@ -143,11 +156,19 @@ app.get('/', (req, res) => {
res.end();
});
app.post('/auth/validation', (req, res) => {
app.post('/auth/validation', async (req, res) => {
const token = req.headers.authorization.split(" ")
const decoded = jwt.verify(token[1], keys.jwt.secret)
return res.status(200)
try{
const data = await User.find({decoded})
if(data){
console.log(data)
return res.status(200).json("success")
}
}catch(err){
console.log('ERROR ERROR')
console.log(err)
}
})
// app.get('/login/google', (req, res) => {
// })
......@@ -182,6 +203,14 @@ app.get('/stream/depth', (req, res) => {
res.end();
});
app.post('/stream/config', (req, res) => {
const configurations = req.body
console.log(configurations)
return res.json(200)
})
//app.get('/stream', (req, res))
/*
......@@ -195,19 +224,50 @@ app.get('/google', passport.authenticate('google', {
* Google authentication API callback route.
* Sets the JWT to clients browser and redirects the user back to front page.
*/
app.get('/auth/google/redirect', passport.authenticate('google'), (req, res) => {
app.get('/auth/google/redirect', passport.authenticate('google'), async (req, res) => {
console.log(req.user)
const token = jwt.sign(req.user.id, keys.jwt.secret);
const htmlWithEmbeddedJWT = `
<html>
<body><h3> You will be automatically redirected to next page.<h3><body>
<script>
window.localStorage.setItem('token', 'bearer ${token}');
window.location.href = '/';
</script>
<html>
`;
res.send(htmlWithEmbeddedJWT)
//Save the req.user.id into MongoDB
const user = new User({
googleID: req.user.id
})
try{
const listOfUsers = await User.find({});
console.log(listOfUsers);
//Checks if the userID is already in db
for(let i=0; i<listOfUsers.length; i++){
if(listOfUsers[i].googleID == req.user.id){
const token = jwt.sign(req.user.id, keys.jwt.secret);
const htmlWithEmbeddedJWT = `
<html>
<body><h3> You will be automatically redirected to next page.<h3><body>
<script>
window.localStorage.setItem('token', 'bearer ${token}');
window.location.href = '/';
</script>
<html>
`;
return res.send(htmlWithEmbeddedJWT)
}
}
await user.save()
const token = jwt.sign(req.user.id, keys.jwt.secret);
const htmlWithEmbeddedJWT = `
<html>
<body><h3> You will be automatically redirected to next page.<h3><body>
<script>
window.localStorage.setItem('token', 'bearer ${token}');
window.location.href = '/';
</script>
<html>
`;
return res.send(htmlWithEmbeddedJWT)
}catch(err){
console.log(err)
}
})
function checkStreams(peer) {
......
const mongoose = require('mongoose')
const configSchema = mongoose.Schema({
board_size: Array,
square_size: Number,
frame_delay: Number,
num_frames: Number,
assume_zero_tangential_distortion: Boolean,
fix_aspect_ratio: Boolean,
fix_principal_point_at_center: Boolean,
use_fisheye_model: Boolean,
fix_k1: {type: Boolean, default: false},
fix_k2: {type: Boolean, default: false},
fix_k3: {type: Boolean, default: false},
fix_k4: {type: Boolean, default: true},
fix_k5: {type: Boolean, default: true},
//Mongoose doesn't let you use attribute save
//save: {type: Boolean, default: true},
use_intrinsics: {type: Boolean, default: true},
use_extrinsics: {type: Boolean, default: true},
flip_vertical: {type: Boolean, default: true},
})
configSchema.set('toJSON', {
transform: (document, returnedObject) => {
returnedObject.id = returnedObject._id
delete returnedObject._id
delete returnedObject.__v
}
})
module.exports = mongoose.model('Config', configSchema)
\ No newline at end of file
const mongoose = require('mongoose')
const userSchema = mongoose.Schema({
googleID: Number,
hakaID: String
})
module.exports = mongoose.model('User', userSchema)
\ No newline at end of file
const MONGODB_URI = 'mongodb+srv://ftl:sOgIX%2638@FTL-w141e.mongodb.net/FTL?retryWrites=true&w=majority'
module.exports = {
MONGODB_URI
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment