Skip to content

Commit fc92ea9

Browse files
authored
Add files via upload
1 parent ea4349c commit fc92ea9

File tree

16 files changed

+3184
-0
lines changed

16 files changed

+3184
-0
lines changed

server/env.example

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
MONGO_URI="mongodb://localhost:27017/acs-qms"
2+
PORT=5000
3+
JWT_SECRET="HAZEMBENHAMAD"
4+
API_URL="http://localhost:5000"
5+
NODE_ENV="PRODUCTION"
6+
STRIPE_PUBLIC="pk_test_51OnIsWBGwGedP86Cmbxi7iicPMUyFtq728YViAkFvZGYxllOQd32F12dmfZj7nSyD2DuTWDvwvdzg8IfMAhi4GxS00Ke3zr3TT"
7+
STRIPE_PRIVATE="sk_test_51OnIsWBGwGedP86CWpXwOjhdReOjJ1gJYTgGu0Mbe6KHgV9X9pFjWUdLvJM0oPfqBv2UW84Da984CdCW2m1JldOs00KSegWu7k"
8+
SMTP_USER="[email protected]"
9+
SMTP_PASS="ahgi nqsk thzk asld"
10+
SUPER_ADMIN_EMAIL="[email protected]"

server/middleware/auth.js

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
const jwt = require('jsonwebtoken');
2+
const User = require('../models/userModel');
3+
const Admin = require('../models/adminModel');
4+
const SuperAdmin = require('../models/superAdminModel');
5+
const dotenv = require('dotenv');
6+
dotenv.config();
7+
8+
const auth = async (req, res, next) => {
9+
try {
10+
// Vérifier si le token est présent dans l'en-tête
11+
const token = req.header('Authorization').replace('Bearer ', '');
12+
13+
if (!token) {
14+
return res.status(401).json({ error: 'Authentification requise' });
15+
}
16+
17+
// Décoder le token
18+
const decoded = jwt.verify(token, process.env.JWT_SECRET);
19+
20+
// Trouver l'utilisateur ou l'admin ou le super admin correspondant au token
21+
if (decoded.userId) {
22+
req.user = await User.findById(decoded.userId);
23+
if (!req.user) {
24+
return res.status(401).json({ error: 'Authentification requise' });
25+
}
26+
} else if (decoded.adminId) {
27+
req.admin = await Admin.findById(decoded.adminId);
28+
if (!req.admin) {
29+
return res.status(401).json({ error: 'Authentification requise' });
30+
}
31+
} else if (decoded.superAdminId) {
32+
req.superAdmin = await SuperAdmin.findById(decoded.superAdminId);
33+
if (!req.superAdmin) {
34+
return res.status(401).json({ error: 'Authentification requise' });
35+
}
36+
} else {
37+
return res.status(401).json({ error: 'Authentification requise' });
38+
}
39+
40+
next();
41+
42+
} catch (err) {
43+
console.error('Erreur d\'authentification:', err);
44+
res.status(401).json({ error: 'Authentification requise' });
45+
}
46+
};
47+
48+
module.exports = auth;

server/models/Action.js

Whitespace-only changes.

server/models/adminModel.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
const mongoose = require('mongoose');
2+
3+
const adminSchema = new mongoose.Schema({
4+
_id: mongoose.Schema.Types.ObjectId,
5+
firstName: { type: String, required: true },
6+
lastName: { type: String, required: true },
7+
businessName: { type: String, required: true },
8+
email: { type: String, required: true, unique: true },
9+
phone: { type: String, required: true },
10+
password: { type: String, required: true },
11+
isPaid: { type: Boolean, default: false },
12+
paymentType: { type: String, enum: ['','cash', 'stripe', 'bank_transfer'], default: '' },
13+
users: [{ type: mongoose.Schema.Types.ObjectId, ref: 'User' }]
14+
});
15+
16+
const Admin = mongoose.model('Admin', adminSchema);
17+
18+
module.exports = Admin;
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
const mongoose = require('mongoose');
2+
3+
const formSubmissionSchema = new mongoose.Schema({
4+
userId: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true },
5+
formData: { type: Object, required: true }, // Contient les données du formulaire QMS
6+
dateSubmitted: { type: Date, default: Date.now }
7+
});
8+
9+
const FormSubmission = mongoose.model('FormSubmission', formSubmissionSchema);
10+
11+
module.exports = FormSubmission;

server/models/superAdminModel.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
const mongoose = require('mongoose');
2+
3+
const superAdminSchema = new mongoose.Schema({
4+
firstName: { type: String, required: true },
5+
lastName: { type: String, required: true },
6+
email: { type: String, required: true, unique: true },
7+
password: { type: String, required: true }
8+
});
9+
10+
const SuperAdmin = mongoose.model('SuperAdmin', superAdminSchema);
11+
12+
module.exports = SuperAdmin;

server/models/userModel.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
const mongoose = require('mongoose');
2+
3+
const userSchema = new mongoose.Schema({
4+
firstName: { type: String, required: true },
5+
lastName: { type: String, required: true },
6+
email: { type: String, required: true, unique: true },
7+
phone: { type: String, required: true },
8+
password: { type: String, required: true },
9+
role: { type: String, enum: ['user', 'admin'], default: 'user' },
10+
adminId: { type: mongoose.Schema.Types.ObjectId, ref: 'Admin' },
11+
formSubmissions: [{ type: mongoose.Schema.Types.ObjectId, ref: 'FormSubmission' }]
12+
});
13+
14+
const User = mongoose.model('User', userSchema);
15+
16+
module.exports = User;

0 commit comments

Comments
 (0)