Skip to content

Commit

Permalink
working on finishing all Schemas for mongoose
Browse files Browse the repository at this point in the history
  • Loading branch information
danykdev committed Jul 29, 2023
1 parent 4e29219 commit 055d023
Show file tree
Hide file tree
Showing 9 changed files with 434 additions and 74 deletions.
Empty file added .env
Empty file.
376 changes: 305 additions & 71 deletions package-lock.json

Large diffs are not rendered by default.

11 changes: 8 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
"description": "",
"main": "index.js",
"scripts": {
"start": "webpack-dev-server --mode development --open --hot",
"start": "nodemon server/server.js --mode production",
"build": "webpack --mode production",
"dev": "webpack-dev-server --mode development --open --hot nodemon server/server.js"
"dev": "webpack-dev-server --mode development --open --hot"
},
"repository": {
"type": "git",
Expand All @@ -20,6 +20,9 @@
},
"homepage": "https://github.com/Fitness-Tracker-WCRI59/fitness-tracker#readme",
"dependencies": {
"cookie-parser": "^1.4.6",
"dotenv": "^16.3.1",
"express": "^4.18.2",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-router-dom": "^6.14.2"
Expand All @@ -31,10 +34,12 @@
"babel-loader": "^9.1.3",
"css-loader": "^6.8.1",
"html-webpack-plugin": "^5.5.3",
"mongodb": "^5.7.0",
"mongoose": "^7.4.1",
"nodemon": "^3.0.1",
"style-loader": "^3.3.3",
"webpack": "^5.88.2",
"webpack-cli": "^5.1.4",
"webpack-dev-server": "^4.15.1"
}
}
}
5 changes: 5 additions & 0 deletions server/controllers/cookieController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
const cookieController = {};

cookieController.setSSIDCookie = (req, res, next) => {
// set cookie called ssid to user id after user has been authenticated
}
11 changes: 11 additions & 0 deletions server/controllers/sessionController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
const sessionController = {};

sessionController.startSession = (req, res, next) => {
// will be called after user has been authenticated. will be receiving user._id.$
// use session documents in db for now - look at other options after this is setup
// create a new session document who has a cookieId set to users id.
}

sessionController.isLoggedIn = (req, res, next) => {
// verify if user has an ssid cookie and if they have an active session in db.
}
6 changes: 6 additions & 0 deletions server/controllers/userController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
const userController = {};


userController.verifyUser = (req, res, next) => {
// we will be recieving username and password in the request body. check if username exists and if so check if password matches. If match set authenticated to true in res.locals and pass along to next middleware. otherwise call global error handler with message user not authenticated and status code 401.
}
Empty file added server/models/sessionModels.js
Empty file.
36 changes: 36 additions & 0 deletions server/models/userModel.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
const mongoose = require('mongoose');
const Schema = mongoose.Schema;



// sets a schema for the username/password

const userSchema = new Schema({
username: { type: String, required: true, unique: true },
password: { type: String, required: true },
name: { type: String, required: true },
age: { type: Number, required: true },
userStats_id: {
type: Schema.Types.ObjectId,
ref: 'health'
},
});

const User = mongoose.model('user', userSchema)

// sets a schema for the user health stats

const statsSchema = new Schema({
height: Number,
weight: { type: Number, required: true },
sex: { type: String, required: true },
targetWeight: { type: Number, required: true },
targetDate: { type: Number }
});

const Stats = mongoose.mode('stats', statsSchema);

/*
*/
63 changes: 63 additions & 0 deletions server/server.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
const express = require('express');
const cookieParser = require('cookie-parser');
const mongoose = require('mongoose');
const path = require('path');
const app = express();
require('dotenv').config();
const PORT = 3000;


// const mongoURI = process.env.DB_URI
const mongoURI = 'mongodb+srv://jmabagat:[email protected]/'

mongoose.connect(mongoURI, {
useNewUrlParser: true,
useUnifiedTopology: true,
dbName: 'fitness_tracker'
})
.then(() => console.log('Connected to Mongo DB.'))
.catch(err => console.log(err));

app.use(express.urlencoded({ extended: true }));
app.use(express.json());
app.use(cookieParser());

app.use(express.static(path.join(__dirname, '../dist')));

app.post('/login', (req, res) => {
// verify user --> start session --> set ssidcookie
// redirect to /dashboard, on that get rout check if user has a session (handle in sessionController.isLoggedIn middleware)
})

app.post('/signup', (req, res) => {
// route for user to sign up. send to userController.createUser --> startSession --> setSSIDCookie. Then redirect to /dashboard
})

app.get('/dashboard', (req, res) => {
// check if user is logged in
})



app.get('/', (req, res) => {
return res.status(200).sendFile(path.resolve(__dirname, '../dist/index.html'))
})

app.use((req, res) => res.status(404).send('Error page not found'))

app.use((err, req, res, next) => {
const defaultErr = {
log: 'Express global error handler caught unknown middleware error',
status: 500,
message: { err: 'An error occurred' },
};
console.log(req, res);
const errObj = Object.assign({}, defaultErr, err);
console.log(errObj.log);
return res.status(errorObj.status).json(errObj.message);
})


app.listen(PORT, () => {
console.log(`Server listening on port ${PORT}`);
})

0 comments on commit 055d023

Please sign in to comment.