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
1 change: 0 additions & 1 deletion .env.example

This file was deleted.

4 changes: 2 additions & 2 deletions DB/db_init.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import mongoose from "mongoose";
import "dotenv/config"


const URI= "mongodb+srv://GDGCIT1:GDGCIT1@gdgcodeit1.zionq.mongodb.net/myDatabase?retryWrites=true&w=majority";
const URI= process.env.DATABASE_URI;

const ConnectDB = async () => {
await mongoose.connect(URI, {useUnifiedTopology: true, useNewUrlParser: true});
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import Categorie from "../models/Categorie.js";
import Roadmap from "../models/Roadmap.js";
import Article from "../models/Article";
import resMsg from "../controllers/ErrorsPage.js";
import resMsg from "../utils/ErrorsPage.js";

export function get_all_cat(req, res) {
try {
Expand Down Expand Up @@ -37,7 +37,6 @@ export async function add_categorie(req, res) {
const categorie = new Categorie({
name: req.body.name,
listofroadmap: [],
listofarticles: [],
});
categorie.save();
return res.status(201).json(categorie);
Expand All @@ -56,10 +55,6 @@ export async function delete_categorie(req, res) {
List1.forEach(async element=>{
await Roadmap.deleteOne({_id:element._id})
})
const List2=cat.listofarticles;
List2.forEach(async element=>{
await Article.deleteOne({_id:element._id})
})
//deleting this categorie doc!
Categorie.remove({ _id: id }).exec()
.then(result => {
Expand All @@ -86,9 +81,6 @@ export function update_categorie(req, res) {
if (req.body.listofroadmap) {
object.listofroadmap = req.body.listofroadmap;
}
if (req.body.listofarticles) {
object.listofarticles = req.body.listofarticles;
}
object.save((err, succes) => {
if (err) {
res.status(500).json(resMsg.errorIntern)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import Checkpoint from "../models/Checkpoint.js"
import Roadmap from "../models/Roadmap.js"
import resMsg from "../controllers/ErrorsPage.js";
import resMsg from "../utils/ErrorsPage.js";

export async function get_all_checkpoint(req, res) {
const Id_roadmap = req.params.Id_Roadmap;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import Message from "../models/Message";
import resMsg from "../controllers/ErrorsPage.js";
import resMsg from "../utils/ErrorsPage.js";


export function get_msg(req, res) {
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/ProjectSubmission.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import Project from "../models/ProjectSubmission.js";
import resMsg from "../controllers/ErrorsPage.js";
import resMsg from "../utils/ErrorsPage.js";

export function get_all(req, res) {
try {
Expand Down
3 changes: 2 additions & 1 deletion app/controllers/RoadmapControler.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import RoadMap from "../models/Roadmap.js";
import Categorie from "../models/Categorie.js";
import Checkpoint from "../models/Checkpoint";
import resMsg from "../controllers/ErrorsPage.js";
import resMsg from "../utils/ErrorsPage.js";

export async function get_all_raodmap(req, res) {
try {
Expand Down Expand Up @@ -37,6 +37,7 @@ export async function add_roadmap(req, res) {
if (req.body.Name !== null) {
const roadmap = new RoadMap({
name: req.body.name,
url: req.body.url,
listofcheckpoint: [],
});
const cat = await Categorie.findOne({ _id: id_cat });
Expand Down
10 changes: 7 additions & 3 deletions app/controllers/adminController.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import bcrypt from "bcrypt";
import { AdminModel } from "../models/Admin";
import resMsg from "../controllers/ErrorsPage.js";
import resMsg from "../utils/ErrorsPage.js";
import { createRefreshToken, createToken } from "./authController";
import { RefreshTokens } from "../models/Tokens";

Expand Down Expand Up @@ -61,7 +61,11 @@ export async function admin_login(req, res) {
createRefreshToken(admin._id, res);
return res //else : the admin is loged in
.status(200)
.json({ status: 201, message: "you are loged in" });
.json({
status: 201,
data: { id: admin._id, username: admin.username },
message: "you are loged in",
});
} catch (e) {
return res.status(500).json(resMsg.errorIntern);
}
Expand All @@ -73,7 +77,7 @@ export async function delete_admin_account(req, res) {
await AdminModel.deleteOne({ _id: req.params.id }); //delete the admin in the DB
return res
.status(200)
.json({ status: 200, data: article, message: "Succesfully deleted" });
.json({ status: 200, message: "Succesfully deleted" });
} catch (e) {
return res.status(500).json(resMsg.errorIntern);
}
Expand Down
10 changes: 3 additions & 7 deletions app/controllers/articleController.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,14 @@
import Article from "../models/Article";
import resMsg from "../controllers/ErrorsPage.js";
import resMsg from "../utils/ErrorsPage.js";

export async function getArticles(req, res) {
try {
const { cat, skip } = req.params;
const query = cat ? { categorie: cat } : {};
const skipped = skip ? skip : 0;

const articles = await Article.find(query).limit(20).skip(skipped);
const articles = await Article.find({});

return res.status(200).json({
status: 200,
data: articles,
message: `Succesfully Retrieved articles for category: ${cat}`,
message: `Succesfully Retrieved articles`,
});
} catch (e) {
return res.status(500).json(resMsg.errorIntern);
Expand Down
26 changes: 13 additions & 13 deletions app/controllers/authController.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { UserModel } from "../models/User";
import bcrypt from "bcrypt";
import jwt from "jsonwebtoken";
import resMsg from "../controllers/ErrorsPage.js";
import resMsg from "../utils/ErrorsPage.js";
import { RefreshTokens } from "../models/Tokens";

const MAX_AGE = 15; //max age in seconds = 15 minutes
const MAX_AGE = 60 * 15; //max age in seconds = 15 minutes
const MAX_AGE_REFRESH = 60 * 60 * 24 * 60; //max age of refresh in seconds = 60 days

//creates the jwt token and sends the cookie
Expand Down Expand Up @@ -41,7 +41,6 @@ export async function signup(req, res) {

const user = await UserModel.create({
username,
categoriefav: "default",
email,
password: hashedPw,
roadposition: [],
Expand All @@ -52,7 +51,11 @@ export async function signup(req, res) {
createToken(user._id, res);
createRefreshToken(user._id, res);

res.status(201).json({ status: 201, data: user._id, message: "signed up" });
res.status(201).json({
status: 201,
data: { username: user.username, id: user._id },
message: "signed up",
});
} catch (e) {
res.status(400).json({ status: 400, message: e.message });
}
Expand All @@ -72,14 +75,11 @@ export async function login(req, res) {
createToken(user._id, res);
await createRefreshToken(user._id, res);

const returnedUser = {
_id: user._id,
username: user.username,
email: user.email,
};
return res
.status(200)
.json({ status: 200, data: returnedUser, message: "you are logged in" });
return res.status(200).json({
status: 200,
data: { username: user.username, id: user._id },
message: "you are logged in",
});
} catch (e) {
return res.status(400).json({ status: 400, message: e.message });
}
Expand All @@ -88,8 +88,8 @@ export async function login(req, res) {
export async function logout(req, res) {
try {
res.cookie("jwt", "", { maxAge: 1 });
//removes refresh token from db
res.cookie("jwt_refresh", "", { maxAge: 1 });
//removes refresh token from db
await RefreshTokens.updateOne(
{},
{ $pull: { refreshTokens: req.cookies.jwt_refresh } }
Expand Down
35 changes: 35 additions & 0 deletions app/controllers/userControllers.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import { UserModel } from "../models/User";
import errMsg from "../utils/ErrorsPage";

export async function getUser(req, res) {
try {
const { username, exp, roadposition } = await UserModel.findById(
req.params.id
);
if (username)
return res.status(200).json({
status: 200,
data: { username, exp, roadposition },
message: "succefully retrived data",
});
return res.status(404).json(errMsg.notFound);
} catch (e) {
return res.status(500).json(errMsg.errorIntern);
}
}

export async function getNotifications(req, res) {
try {
const { notification } = await UserModel.findById(req.decodedToken.id);

if (notification)
return res.status(200).json({
status: 200,
data: notification,
message: "succefully retrived data",
});
return res.status(404).json(errMsg.notFound);
} catch (e) {
return res.status(500).json(errMsg.errorIntern);
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { AdminModel } from "../models/Admin";
import { AdminModel } from "../models/Admin.js";
import jwt from "jsonwebtoken";
import "dotenv/config";

export function checkAuth(req, res, next) {
const token = req.cookies.jwt;
Expand All @@ -12,8 +13,8 @@ export function checkAuth(req, res, next) {
.status(401)
.json({ status: 401, message: "user not authenticated" });

jwt.verify(token, "secret key");

const decodedToken = jwt.verify(token, "secret key");
req.decodedToken = decodedToken;
next();
} catch (e) {
return res.status(403).json({ status: 403, message: "not authorized" });
Expand All @@ -23,7 +24,7 @@ export function checkAuth(req, res, next) {
export async function checkAdmin(req, res, next) {
const token = req.cookies.jwt;
try {
const checkedToken = jwt.verify(token, "secret key");
const checkedToken = jwt.verify(token, process.env.JWT_SECRET_KEY);
const admin = await AdminModel.findById(checkedToken.id);
if (admin) next();
else
Expand Down
18 changes: 9 additions & 9 deletions app/models/Categorie.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,20 @@ export const categorieSchema = new mongoose.Schema(
},
listofroadmap: [
{
id: {
type: mongoose.Schema.Types.String,
required: true,
},
},
],
listofarticles: [
{
id: {
_id: {
type: mongoose.Schema.Types.String,
required: true,
},
},
],
// listofarticles: [
// {
// id: {
// type: mongoose.Schema.Types.String,
// required: true,
// },
// },
// ],
},
{
timestamps: true,
Expand Down
4 changes: 4 additions & 0 deletions app/models/Roadmap.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ export const roadmapSchema = new mongoose.Schema(
type: mongoose.Schema.Types.String,
required: true,
},
url:{
type: mongoose.Schema.Types.String,
required:true,
},
listofcheckpoint: [
{
_id: {
Expand Down
69 changes: 37 additions & 32 deletions app/models/User.js
Original file line number Diff line number Diff line change
@@ -1,44 +1,49 @@
import mongoose from 'mongoose';
const DOCUMENT_NAME = 'UserAccount';
const COLLECTION_NAME = 'userAccounts';
import mongoose from "mongoose";
const DOCUMENT_NAME = "UserAccount";
const COLLECTION_NAME = "userAccounts";



const SubSchema = new mongoose.Schema ({
checkPoint_id : {
type: mongoose.Schema.Types.String,
required: true,
}
}
);
export const userSchema = new mongoose.Schema({
username: {
type: mongoose.Schema.Types.String,
required: true,
const SubSchema = new mongoose.Schema({
checkPoint_id: {
type: mongoose.Schema.Types.String,
required: true,
},
});
export const userSchema = new mongoose.Schema(
{
username: {
type: mongoose.Schema.Types.String,
required: true,
},
categoriefav : {
type: mongoose.Schema.Types.String,
required: true,
categoriefav: {
type: mongoose.Schema.Types.String,
},
email: {
type: mongoose.Schema.Types.String,
required: true,
type: mongoose.Schema.Types.String,
required: true,
},
password: {
type: mongoose.Schema.Types.String,
required: true,
type: mongoose.Schema.Types.String,
required: true,
},
roadposition:[SubSchema],
exp : {
type: mongoose.Schema.Types.Number,
required:true
roadposition: [SubSchema],
exp: {
type: mongoose.Schema.Types.Number,
required: true,
},
notification: [ {
notification: [
{
type: mongoose.Schema.Types.String,
required: true,
}],
}, {
},
],
},
{
timestamps: true,
});
}
);

export const UserModel = mongoose.model(DOCUMENT_NAME, userSchema, COLLECTION_NAME)
export const UserModel = mongoose.model(
DOCUMENT_NAME,
userSchema,
COLLECTION_NAME
);
Loading