mirror of
https://github.com/arnaucube/openworktime.git
synced 2026-02-07 11:46:40 +01:00
user connected comprovation system implemented
This commit is contained in:
@@ -53,7 +53,7 @@ exports.findUserByUsername = function(req, res) {
|
|||||||
// return the information including token as JSON
|
// return the information including token as JSON
|
||||||
//res.jsonp(user);
|
//res.jsonp(user);
|
||||||
user.password="";
|
user.password="";
|
||||||
console.log(user);
|
//console.log(user);
|
||||||
res.status(200).jsonp(user[0]);
|
res.status(200).jsonp(user[0]);
|
||||||
|
|
||||||
|
|
||||||
@@ -61,6 +61,27 @@ exports.findUserByUsername = function(req, res) {
|
|||||||
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
exports.findLoggedUserByUsername = function(req, res) {
|
||||||
|
userModel.find({
|
||||||
|
username: req.params.username
|
||||||
|
}, function(err, user) {
|
||||||
|
if (err) throw err;
|
||||||
|
if (!user) {
|
||||||
|
res.json({ success: false, message: 'no user found' });
|
||||||
|
} else if (user) {
|
||||||
|
//console.log(user[0]);
|
||||||
|
//res.status(200).jsonp(user[0]);
|
||||||
|
user[0].connected= true;
|
||||||
|
user[0].lastConnection= new Date(); //adds the last connection time
|
||||||
|
user[0].save(function(err) {
|
||||||
|
if(err) return res.send(500, err.message);
|
||||||
|
|
||||||
|
user[0].password="";
|
||||||
|
res.status(200).jsonp(user[0]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
//POST - Insert a new User in the DB
|
//POST - Insert a new User in the DB
|
||||||
exports.addUser = function(req, res) {
|
exports.addUser = function(req, res) {
|
||||||
|
|||||||
45
intervalComprovations.js
Normal file
45
intervalComprovations.js
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
|
||||||
|
var mongoose = require('mongoose');
|
||||||
|
var moment = require('moment');
|
||||||
|
var projectModel = mongoose.model('projectModel');
|
||||||
|
|
||||||
|
var userModel = mongoose.model('userModel');
|
||||||
|
|
||||||
|
|
||||||
|
exports.lastConnectionUser = function() {
|
||||||
|
var lastIntervalDate = new Date();
|
||||||
|
var intervalObject = setInterval(function () {
|
||||||
|
var actualDate= new Date();
|
||||||
|
//console.log(actualDate);
|
||||||
|
lastIntervalDate.setMinutes(lastIntervalDate.getMinutes() - 4);
|
||||||
|
console.log(lastIntervalDate);
|
||||||
|
|
||||||
|
userModel.find(function(err, users) {
|
||||||
|
if(err) res.send(500, err.message);
|
||||||
|
|
||||||
|
|
||||||
|
for(var i=0; i<users.length; i++)
|
||||||
|
{
|
||||||
|
if(users[i].connected==true)
|
||||||
|
{
|
||||||
|
if(users[i].lastConnection<=lastIntervalDate.setMinutes(lastIntervalDate.getMinutes() - 4))
|
||||||
|
{
|
||||||
|
if(users[i].connected==true)
|
||||||
|
{
|
||||||
|
console.log("user disconnected: " + users[i].username);
|
||||||
|
users[i].connected= false;
|
||||||
|
users[i].save(function(err) {
|
||||||
|
if(err) return res.send(500, err.message);
|
||||||
|
//console.log("user: " + users[i].username + ", connected=false");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
lastIntervalDate= new Date();
|
||||||
|
}, 60000);//every minute
|
||||||
|
};
|
||||||
@@ -12,6 +12,7 @@ var userSchema = new Schema({
|
|||||||
web: { type: String },
|
web: { type: String },
|
||||||
projects: { type: String },
|
projects: { type: String },
|
||||||
connected: { type: Boolean },
|
connected: { type: Boolean },
|
||||||
working: { type: Boolean }
|
working: { type: Boolean },
|
||||||
|
lastConnection: { type: Date }
|
||||||
})
|
})
|
||||||
module.exports = mongoose.model('userModel', userSchema);
|
module.exports = mongoose.model('userModel', userSchema);
|
||||||
|
|||||||
@@ -32,6 +32,10 @@ var userCtrl = require('./controllers/userController');
|
|||||||
var projectMdl = require('./models/projectModel')(app, mongoose);
|
var projectMdl = require('./models/projectModel')(app, mongoose);
|
||||||
var projectCtrl = require('./controllers/projectController');
|
var projectCtrl = require('./controllers/projectController');
|
||||||
|
|
||||||
|
|
||||||
|
var intervalComprovations = require('./intervalComprovations');
|
||||||
|
intervalComprovations.lastConnectionUser();
|
||||||
|
|
||||||
/*// Example Route
|
/*// Example Route
|
||||||
var router = express.Router();
|
var router = express.Router();
|
||||||
router.get('/', function(req, res) {
|
router.get('/', function(req, res) {
|
||||||
@@ -100,8 +104,8 @@ apiRoutes.route('/users')
|
|||||||
|
|
||||||
apiRoutes.route('/users/:id')
|
apiRoutes.route('/users/:id')
|
||||||
.get(userCtrl.findById);
|
.get(userCtrl.findById);
|
||||||
apiRoutes.route('/users/byusername/:username')
|
apiRoutes.route('/users/loggeduser/:username')
|
||||||
.get(userCtrl.findUserByUsername);
|
.get(userCtrl.findLoggedUserByUsername);
|
||||||
apiRoutes.route('/projects/user/:username')
|
apiRoutes.route('/projects/user/:username')
|
||||||
.get(projectCtrl.findAllProjectsFromUsername);
|
.get(projectCtrl.findAllProjectsFromUsername);
|
||||||
|
|
||||||
|
|||||||
@@ -10,18 +10,30 @@ angular.module('workApp', ['chart.js'])
|
|||||||
$scope.users={};
|
$scope.users={};
|
||||||
$scope.projects={};
|
$scope.projects={};
|
||||||
$scope.currentInclude='login.html';
|
$scope.currentInclude='login.html';
|
||||||
var refreshTime=20000;
|
var refreshTime=10000;//every 10 seconds
|
||||||
|
|
||||||
|
var errorsGettingData=0;
|
||||||
|
$scope.serverNotResponding = function(){
|
||||||
|
console.log("server not responding, data error");
|
||||||
|
toastr.error("server not responding");
|
||||||
|
$scope.$broadcast('scroll.refreshComplete');//refresher stop
|
||||||
|
errorsGettingData++;
|
||||||
|
console.log("errorsGettingData: " + errorsGettingData);
|
||||||
|
if(errorsGettingData>3)
|
||||||
|
{
|
||||||
|
$interval.cancel(intervalGetData);
|
||||||
|
$scope.currentInclude="login.html";
|
||||||
|
}
|
||||||
|
};
|
||||||
$scope.getLoggedUser = function(){
|
$scope.getLoggedUser = function(){
|
||||||
//get logged user
|
//get logged user
|
||||||
$http.get(urlapi + 'users/byusername/' + $scope.user.username)
|
$http.get(urlapi + 'users/loggeduser/' + $scope.user.username)
|
||||||
.success(function(data, status, headers,config){
|
.success(function(data, status, headers,config){
|
||||||
console.log(data);
|
console.log(data);
|
||||||
$scope.user=data;
|
$scope.user=data;
|
||||||
})
|
})
|
||||||
.error(function(data, status, headers,config){
|
.error(function(data, status, headers,config){
|
||||||
console.log("server not responding, data error");
|
$scope.serverNotResponding();
|
||||||
toastr.error("server not responding");
|
|
||||||
$scope.$broadcast('scroll.refreshComplete');//refresher stop
|
|
||||||
})
|
})
|
||||||
.then(function(result){
|
.then(function(result){
|
||||||
users = result.data;
|
users = result.data;
|
||||||
@@ -37,10 +49,12 @@ angular.module('workApp', ['chart.js'])
|
|||||||
if(localStorage.getItem("owt_user")){
|
if(localStorage.getItem("owt_user")){
|
||||||
$scope.user=JSON.parse(localStorage.getItem("owt_user"));
|
$scope.user=JSON.parse(localStorage.getItem("owt_user"));
|
||||||
}else{
|
}else{
|
||||||
$scope.currentInclude="login.html";
|
|
||||||
|
$scope.serverNotResponding();
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.getLoggedUser();
|
$scope.getLoggedUser();
|
||||||
|
|
||||||
//getting users
|
//getting users
|
||||||
$http.get(urlapi + 'users')
|
$http.get(urlapi + 'users')
|
||||||
.success(function(data, status, headers,config){
|
.success(function(data, status, headers,config){
|
||||||
|
|||||||
Reference in New Issue
Block a user