Skip to content

Commit

Permalink
test de stationnement
Browse files Browse the repository at this point in the history
  • Loading branch information
morningstar-47 committed Dec 28, 2023
1 parent 901782a commit 3b0255e
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 62 deletions.
4 changes: 2 additions & 2 deletions .env
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,5 @@ JWT_LIFETIME_REFRESH=86400
WINDOW_MS=2 * 60 * 1000

# Environnement de l'application
NODE_ENV=development
#NODE_ENV=production
# NODE_ENV=development
NODE_ENV=production
8 changes: 4 additions & 4 deletions background.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
// background.js
import { db } from "./models/index.js";
import RefreshToken from "./models/refreshToken.model.js";

export default async function removeExpiredRefreshTokens() {
async function removeExpiredRefreshTokens() {
try {
// Supprimez les refresh tokens expirés
const result = await RefreshToken.removeExpiredTokens();
console.log(`Deleted ${result.deletedCount} expired refresh tokens.`);
await RefreshToken.removeExpiredTokens();
console.log(`Deleted expired refresh tokens.`);
} catch (err) {
console.error("Error deleting expired refresh tokens", err);
}
}
export { removeExpiredRefreshTokens };
106 changes: 50 additions & 56 deletions server.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,39 +10,56 @@ import { db } from "./models/index.js";
import { _config } from "./config/global.config.js";
import { serverConfig } from "./config/server.config.mjs";
import router from "./routes/index.js";
import winston from 'winston';
import fs from 'fs';
import winston from "winston";
import fs from "fs";
import { initial } from "./config/db.config.js";
import { removeExpiredRefreshTokens } from "./background.js";

const app = express();

// Configuration des répertoires et fichiers de journal
// const logDirectory = path.join(path.dirname(fileURLToPath(import.meta.url)), 'logs');
// const logFilePath = path.join(logDirectory, 'access.log');
// const errFilePath = path.join(logDirectory, 'error.log');

// Vérification et création du répertoire des journaux
// if (!fs.existsSync(logDirectory)) {
// fs.mkdirSync(logDirectory);
// }

// Adaptateur pour le flux de Winston
class WinstonStreamAdapter {
write(message) {
logger.info(message);
let logger;

if (serverConfig.environment !== "production") {
// Configuration des répertoires et fichiers de journal
const logDirectory = path.join(
path.dirname(fileURLToPath(import.meta.url)),
"logs"
);
const logFilePath = path.join(logDirectory, "access.log");
const errFilePath = path.join(logDirectory, "error.log");

// Vérification et création du répertoire des journaux
if (!fs.existsSync(logDirectory)) {
fs.mkdirSync(logDirectory);
}
}

// Configuration du logger Winston
// const logger = winston.createLogger({
// level: 'info',
// format: winston.format.json(),
// transports: [
// new winston.transports.Console(),
// new winston.transports.File({ filename: errFilePath, level: 'error' }),
// new winston.transports.File({ filename: logFilePath, level: 'info' }),
// ],
// });
// Adaptateur pour le flux de Winston
class WinstonStreamAdapter {
write(message) {
logger.info(message);
}
}

//Configuration du logger Winston
logger = winston.createLogger({
level: "info",
format: winston.format.json(),
transports: [
new winston.transports.Console(),
new winston.transports.File({ filename: errFilePath, level: "error" }),
new winston.transports.File({ filename: logFilePath, level: "info" }),
],
});

// Utilisation du logger Winston avec Morgan pour la journalisation des requêtes
app.use(morgan("combined", { stream: new WinstonStreamAdapter() }));

// Utilisation de setTimeout pour déclencher removeExpiredRefreshTokens après 20 secondes
setTimeout(() => {
removeExpiredRefreshTokens();
}, 20000);
} else {
app.use(morgan("dev"));
}
// Configuration des middlewares
app.use(session(serverConfig.sessionOptions));
app.use(cors(serverConfig.corsOptions));
Expand All @@ -54,10 +71,6 @@ const __dirname = path.dirname(__filename);
const faviconPath = path.join(__dirname, "appointment.png");
app.use(favicon(faviconPath));

// Utilisation du logger Winston avec Morgan pour la journalisation des requêtes
// app.use(morgan("combined", { stream: new WinstonStreamAdapter() }));
app.use(morgan('dev'));

// Configuration du body parser
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
Expand All @@ -67,49 +80,30 @@ app.use("/", router);

// Gestionnaire d'erreurs pour les erreurs internes du serveur (500)
app.use((err, req, res, next) => {
// logger.error(err.stack);
logger.error(err.stack);
console.error(err.stack);
res.status(err.status || 500).json({ message: err.message || "Internal Server Error" });
res
.status(err.status || 500)
.json({ message: err.message || "Internal Server Error" });
});

// Démarrage du serveur
app.listen(serverConfig.port, () => {
console.log(`Server is running on port ${serverConfig.port}.`);
});

// Connexion à la base de données MongoDB
const Role = db.role;

// Fonction pour la connexion à la base de données et initialisation
async function connectToDb() {
try {
await db.mongoose.connect(_config.mongo_url);
console.log("Successfully connected to MongoDB.");
await initial();
} catch (error) {
// logger.error("Connection", error);
logger.error("Connection", error);
console.error("Connection", error);
process.exit(1);
}
}

// Appel de la fonction de connexion à la base de données
connectToDb();

// Initialisation des rôles dans la base de données
async function initial() {
try {
const count = await Role.estimatedDocumentCount();
if (count === 0) {
await Promise.all([
new Role({ name: "user" }).save(),
new Role({ name: "moderator" }).save(),
new Role({ name: "admin" }).save(),
]);
console.log("Roles added to the collection.");
}
} catch (err) {
// logger.error("Error initializing roles", err);
console.error("Error initializing roles", err);
}
}

0 comments on commit 3b0255e

Please sign in to comment.