Дипломная работа: Автоматизация учета рабочего времени сотрудников компании "Альтерон"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
81
router.get('/admin/:id', (req, res) => {
Session.find({user: req.params.id}, (err, data) => {
res.render('user_info', { user: req.user.name, sessions: data });
})
})
module.exports = router;
Sessions module:
const mongoose = require('mongoose');
const SessionSchema = new mongoose.Schema({
user: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
},
session_id: String,
timeWork: {
type: String,
},
dateStart: {
type: Date,
required: true
},
dateEnd: {
type: Date,
},
screenshots: [
{
82
type: String
}
]
});
const Session = mongoose.model('Session', SessionSchema);
module.exports = Session;
SMODULE:
//Session Model
const Session = require('../models/Sessions');
const fs = require('fs');
var cloudinary = require('cloudinary').v2;
cloudinary.config({
cloud_name: 'dizvqjwje',
api_key: '628951932649775',
api_secret: 'lLegU4hF8DYbBJzaTDAlvgSe0gY'
});
function sessionClosed(req, timeStart) {
let urls = [];
let items = fs.readdirSync('./uploads');
items.forEach((item) => {
cloudinary.uploader.upload("./uploads/" + item, (err, data) => {
urls.push(data.url);
})
});
setTimeout(() => {
83
Session.findOneAndUpdate({session_id: req.sessionID},
{ $set: { dateEnd: new Date(),
timeWork: getTotalTime(timeStart, new Date()),
screenshots: urls } }, (err) => {
if (err) {
console.log("Session is not updated");
}
});
}, 3000);
}
function initSession(req) {
const s = new Session({
user: req.user._id,
session_id: req.sessionID,
timeWork: '0',
dateStart: new Date(),
})
s.save();
}
function getTotalTime(a, b) {
let dayStart = new Date(a);
let dayEnd = new Date(b);
let diff = Math.abs(dayEnd - dayStart);
return new Date(diff).getUTCHours() + ":" + new Date(diff).getMinutes() +
":" + new Date(diff).getSeconds();
}
84
module.exports = {
sessionClosed: sessionClosed,
initSession: initSession
};
PASSPORT.JS:
const LocalStrategy = require('passport-local').Strategy;
const mongoose = require('mongoose');
const bcrypt = require('bcryptjs');
const passport = require('passport');
//User Model
const User = require('../models/User');
module.exports = (passport) => {
passport.use(
new LocalStrategy({ usernameField: 'email' }, (email, password, done) =>
{
// Match User
User.findOne({ email: email })
.then(user => {
if (!user) {
return done(null, false, { message: 'Пользователя с такой почтой
не существует' });
}
// Match password
if (user.password != password) {
return done(null, false, { message: 'Неверный пароль' });
85
}
return done(null, user);
})
.catch(err => console.log(err));
})
);
passport.serializeUser((user, done) => {
done(null, user.id);
});
passport.deserializeUser((id, done) => {
User.findById(id, (err, user) => {
done(err, user);
});
});
}
Источник: https://baza.diplomsite.ru/previewfile/2447