- Finished Booking an Event
- Starting UsersList (creating CGridTableRec component to view and edit a db table)
This commit is contained in:
@@ -25,7 +25,7 @@ var UserSchema = new mongoose.Schema({
|
|||||||
required: true,
|
required: true,
|
||||||
trim: true,
|
trim: true,
|
||||||
minlength: 1,
|
minlength: 1,
|
||||||
unique: true,
|
unique: false,
|
||||||
/*validate: {
|
/*validate: {
|
||||||
validator: validator.isEmail,
|
validator: validator.isEmail,
|
||||||
message: '{VALUE} is not a valid email'
|
message: '{VALUE} is not a valid email'
|
||||||
@@ -40,7 +40,7 @@ var UserSchema = new mongoose.Schema({
|
|||||||
required: true,
|
required: true,
|
||||||
trim: true,
|
trim: true,
|
||||||
minlength: 6,
|
minlength: 6,
|
||||||
unique: true,
|
unique: false,
|
||||||
},
|
},
|
||||||
name: {
|
name: {
|
||||||
type: String,
|
type: String,
|
||||||
@@ -83,6 +83,13 @@ var UserSchema = new mongoose.Schema({
|
|||||||
type: Date
|
type: Date
|
||||||
},
|
},
|
||||||
}],
|
}],
|
||||||
|
perm: {
|
||||||
|
type: Number
|
||||||
|
},
|
||||||
|
date_reg: {
|
||||||
|
type: Date,
|
||||||
|
default: Date.now()
|
||||||
|
},
|
||||||
date_tokenforgot: {
|
date_tokenforgot: {
|
||||||
type: Date
|
type: Date
|
||||||
},
|
},
|
||||||
@@ -96,7 +103,7 @@ UserSchema.methods.toJSON = function () {
|
|||||||
var user = this;
|
var user = this;
|
||||||
var userObject = user.toObject();
|
var userObject = user.toObject();
|
||||||
|
|
||||||
return _.pick(userObject, ['_id', 'email', 'verified_email', 'username', 'userId', 'name', 'surname']);
|
return _.pick(userObject, ['_id', 'email', 'verified_email', 'idapp', 'username', 'userId', 'name', 'surname', 'perm']);
|
||||||
};
|
};
|
||||||
|
|
||||||
UserSchema.methods.generateAuthToken = function (req) {
|
UserSchema.methods.generateAuthToken = function (req) {
|
||||||
@@ -106,10 +113,10 @@ UserSchema.methods.generateAuthToken = function (req) {
|
|||||||
const useragent = req.get('User-Agent');
|
const useragent = req.get('User-Agent');
|
||||||
tools.mylog("GENERATE USER-AGENT = ", useragent);
|
tools.mylog("GENERATE USER-AGENT = ", useragent);
|
||||||
|
|
||||||
var access = 'auth';
|
const access = 'auth';
|
||||||
const browser = useragent;
|
const browser = useragent;
|
||||||
var token = jwt.sign({ _id: user._id.toHexString(), access }, process.env.SIGNCODE).toString();
|
const token = jwt.sign({ _id: user._id.toHexString(), access }, process.env.SIGNCODE).toString();
|
||||||
var date_login = new Date();
|
const date_login = new Date();
|
||||||
|
|
||||||
// CANCELLA IL PRECEDENTE !
|
// CANCELLA IL PRECEDENTE !
|
||||||
user.tokens = user.tokens.filter(function (tok) {
|
user.tokens = user.tokens.filter(function (tok) {
|
||||||
@@ -127,9 +134,30 @@ UserSchema.methods.generateAuthToken = function (req) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
UserSchema.statics.setPermissionsById = function (id, perm) {
|
||||||
|
const user = this;
|
||||||
|
|
||||||
|
return user.findByIdAndUpdate(id, { $set: { perm } }).then((user) => {
|
||||||
|
if (user)
|
||||||
|
return res.send({ code: server_constants.RIS_CODE_OK, msg: '' });
|
||||||
|
else
|
||||||
|
return res.send({ code: server_constants.RIS_CODE_ERR, msg: '' });
|
||||||
|
});
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
UserSchema.statics.isAdmin = function (user) {
|
||||||
|
try {
|
||||||
|
const ris = ((user.perm & tools.Permissions.Admin) === 1);
|
||||||
|
return ris;
|
||||||
|
}catch (e) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
UserSchema.statics.findByToken = function (token, typeaccess) {
|
UserSchema.statics.findByToken = function (token, typeaccess) {
|
||||||
var User = this;
|
const User = this;
|
||||||
var decoded;
|
let decoded;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
decoded = jwt.verify(token, process.env.SIGNCODE);
|
decoded = jwt.verify(token, process.env.SIGNCODE);
|
||||||
@@ -160,14 +188,14 @@ UserSchema.statics.findByTokenAnyAccess = function (token) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
UserSchema.statics.findByCredentials = function (username, password) {
|
UserSchema.statics.findByCredentials = function (idapp, username, password) {
|
||||||
var User = this;
|
var User = this;
|
||||||
var pwd = "";
|
var pwd = "";
|
||||||
|
|
||||||
return User.findOne({ username: username }).then((user) => {
|
return User.findOne({ idapp, username: username }).then((user) => {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
// Check if with email:
|
// Check if with email:
|
||||||
return User.findOne({ email: username })
|
return User.findOne({ idapp, email: username })
|
||||||
} else {
|
} else {
|
||||||
return user
|
return user
|
||||||
}
|
}
|
||||||
@@ -193,10 +221,11 @@ UserSchema.statics.findByCredentials = function (username, password) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
UserSchema.statics.findByUsername = function (username) {
|
UserSchema.statics.findByUsername = function (idapp, username) {
|
||||||
var User = this;
|
const User = this;
|
||||||
|
|
||||||
return User.findOne({
|
return User.findOne({
|
||||||
|
'idapp': idapp,
|
||||||
'username': username,
|
'username': username,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@@ -222,10 +251,11 @@ UserSchema.statics.findByLinkTokenforgot = function (idapp, email, tokenforgot)
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
UserSchema.statics.findByEmail = function (email) {
|
UserSchema.statics.findByEmail = function (idapp, email) {
|
||||||
var User = this;
|
var User = this;
|
||||||
|
|
||||||
return User.findOne({
|
return User.findOne({
|
||||||
|
'idapp': idapp,
|
||||||
'email': email,
|
'email': email,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@@ -249,7 +279,7 @@ UserSchema.pre('save', function (next) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
UserSchema.methods.removeToken = function (token) {
|
UserSchema.methods.removeToken = function (token) {
|
||||||
var user = this;
|
const user = this;
|
||||||
|
|
||||||
return user.update({
|
return user.update({
|
||||||
$pull: {
|
$pull: {
|
||||||
@@ -258,6 +288,13 @@ UserSchema.methods.removeToken = function (token) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
UserSchema.statics.getUsersList = function (idapp) {
|
||||||
|
const User = this;
|
||||||
|
|
||||||
|
return User.find({ 'idapp': idapp }, { username: 1, name: 1, surname: 1, verified_email: 1, perm:1, email: 1 })
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
var User = mongoose.model('User', UserSchema);
|
var User = mongoose.model('User', UserSchema);
|
||||||
|
|
||||||
|
|||||||
@@ -7,9 +7,9 @@ function toHexString(bytes) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
getlinkregByEmail: function (email, username) {
|
getlinkregByEmail: function (idapp, email, username) {
|
||||||
try{
|
try{
|
||||||
mystr = email + username;
|
mystr = idapp + email + username;
|
||||||
return jwt.sign(toHexString(mystr), process.env.SIGNCODE).toString();
|
return jwt.sign(toHexString(mystr), process.env.SIGNCODE).toString();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
|
|||||||
@@ -3,10 +3,11 @@ const router = express.Router();
|
|||||||
|
|
||||||
var {User} = require('../models/user');
|
var {User} = require('../models/user');
|
||||||
|
|
||||||
router.get('/:email', (req, res) => {
|
router.get('/:email/:idapp', (req, res) => {
|
||||||
var email = req.params.email;
|
var email = req.params.email;
|
||||||
|
const idapp = req.params.idapp;
|
||||||
|
|
||||||
User.findByEmail(email).then((user) => {
|
User.findByEmail(idapp, email).then((user) => {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(404).send();
|
return res.status(404).send();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -93,12 +93,21 @@ router.get(process.env.LINK_CHECK_UPDATES, authenticate, (req, res) => {
|
|||||||
|
|
||||||
// ++Todo: Add to Log Stat ....
|
// ++Todo: Add to Log Stat ....
|
||||||
|
|
||||||
|
if (req.user) {
|
||||||
|
// If User is Admin, then send user Lists
|
||||||
|
if (User.isAdmin(req.user)) {
|
||||||
|
// Send UsersList
|
||||||
|
return User.getUsersList(req.user.idapp).then(usersList => {
|
||||||
|
return res.send({ cfgServer: arrcfgrec, usersList });
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
res.send({ cfgServer: arrcfgrec });
|
res.send({ cfgServer: arrcfgrec });
|
||||||
|
|
||||||
}).catch((e) => {
|
}).catch((e) => {
|
||||||
console.log(e);
|
console.log(e);
|
||||||
res.status(400).send();
|
res.status(400).send({ code: server_constants.RIS_CODE_ERR, msg: e });
|
||||||
res.send({ code: server_constants.RIS_CODE_ERR, msg: e });
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ var { User } = require('../models/user');
|
|||||||
var sendemail = require('../sendemail');
|
var sendemail = require('../sendemail');
|
||||||
|
|
||||||
const tools = require('../tools/general');
|
const tools = require('../tools/general');
|
||||||
|
const shared_consts = require('../tools/shared_nodejs');
|
||||||
|
|
||||||
var server_constants = require('../tools/server_constants');
|
var server_constants = require('../tools/server_constants');
|
||||||
|
|
||||||
@@ -37,14 +38,14 @@ router.post('/', (req, res) => {
|
|||||||
|
|
||||||
// tools.mylog("LANG PASSATO = " + user.lang, "IDAPP", user.idapp);
|
// tools.mylog("LANG PASSATO = " + user.lang, "IDAPP", user.idapp);
|
||||||
|
|
||||||
user.linkreg = reg.getlinkregByEmail(body.email, body.username);
|
user.linkreg = reg.getlinkregByEmail(body.idapp, body.email, body.username);
|
||||||
user.verified_email = false;
|
user.verified_email = false;
|
||||||
if (tools.testing()) {
|
if (tools.testing()) {
|
||||||
user.verified_email = true;
|
user.verified_email = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
user.save().then(() => {
|
user.save().then(() => {
|
||||||
User.findByUsername(user.username)
|
User.findByUsername(user.idapp, user.username)
|
||||||
.then((usertrovato) => {
|
.then((usertrovato) => {
|
||||||
|
|
||||||
tools.mylog("TROVATO USERNAME ? ", user.username, usertrovato);
|
tools.mylog("TROVATO USERNAME ? ", user.username, usertrovato);
|
||||||
@@ -72,10 +73,11 @@ router.post('/', (req, res) => {
|
|||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
router.get('/:username', (req, res) => {
|
router.get('/:username/:idapp', (req, res) => {
|
||||||
var username = req.params.username;
|
var username = req.params.username;
|
||||||
|
const idapp = req.params.idapp;
|
||||||
|
|
||||||
User.findByUsername(username).then((user) => {
|
User.findByUsername(idapp, username).then((user) => {
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return res.status(404).send();
|
return res.status(404).send();
|
||||||
}
|
}
|
||||||
@@ -85,6 +87,31 @@ router.get('/:username', (req, res) => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
router.patch('/:id', authenticate, (req, res) => {
|
||||||
|
const id = req.params.id;
|
||||||
|
const body = _.pick(req.body.user, shared_consts.fieldsUserToChange());
|
||||||
|
|
||||||
|
tools.mylogshow('PATCH USER: ', id);
|
||||||
|
|
||||||
|
if (!User.isAdmin(req.user)) {
|
||||||
|
// If without permissions, exit
|
||||||
|
return res.status(404).send();
|
||||||
|
}
|
||||||
|
|
||||||
|
User.findByIdAndUpdate(id, { $set: body }).then((user) => {
|
||||||
|
tools.mylogshow(' USER TO MODIFY: ', user);
|
||||||
|
if (!user) {
|
||||||
|
return res.status(404).send();
|
||||||
|
} else {
|
||||||
|
res.send({ code: server_constants.RIS_CODE_OK, msg: '' });
|
||||||
|
}
|
||||||
|
|
||||||
|
}).catch((e) => {
|
||||||
|
tools.mylogserr('Error patch USER: ', e);
|
||||||
|
res.status(400).send();
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
router.post('/login', (req, res) => {
|
router.post('/login', (req, res) => {
|
||||||
var body = _.pick(req.body, ['username', 'password', 'idapp', 'keyappid', 'lang']);
|
var body = _.pick(req.body, ['username', 'password', 'idapp', 'keyappid', 'lang']);
|
||||||
@@ -100,7 +127,7 @@ router.post('/login', (req, res) => {
|
|||||||
|
|
||||||
let resalreadysent = false;
|
let resalreadysent = false;
|
||||||
|
|
||||||
User.findByCredentials(user.username, user.password)
|
User.findByCredentials(user.idapp, user.username, user.password)
|
||||||
.then((user) => {
|
.then((user) => {
|
||||||
tools.mylog("CREDENZIALI ! ");
|
tools.mylog("CREDENZIALI ! ");
|
||||||
if (!user) {
|
if (!user) {
|
||||||
@@ -119,6 +146,7 @@ router.post('/login', (req, res) => {
|
|||||||
usertosend.email = user.email;
|
usertosend.email = user.email;
|
||||||
usertosend.userId = user._id.toHexString();
|
usertosend.userId = user._id.toHexString();
|
||||||
usertosend.verified_email = user.verified_email;
|
usertosend.verified_email = user.verified_email;
|
||||||
|
usertosend.idapp = user.idapp;
|
||||||
|
|
||||||
// tools.mylog("user.verified_email:" + user.verified_email);
|
// tools.mylog("user.verified_email:" + user.verified_email);
|
||||||
tools.mylog("usertosend.userId", usertosend.userId);
|
tools.mylog("usertosend.userId", usertosend.userId);
|
||||||
@@ -171,4 +199,15 @@ router.delete('/me/token', authenticate, (req, res) => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
router.post('/setperm', authenticate, (req, res) => {
|
||||||
|
const body = _.pick(req.body, ['idapp', 'username', 'perm']);
|
||||||
|
tools.mylog("SETPERM = " + req.token);
|
||||||
|
|
||||||
|
User.setPermissionsById(res.user._id, body).then(() => {
|
||||||
|
res.status(200).send();
|
||||||
|
}, () => {
|
||||||
|
res.status(400).send();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
module.exports = router;
|
module.exports = router;
|
||||||
|
|||||||
@@ -32,6 +32,12 @@ module.exports = {
|
|||||||
MAX_PHASES: 5,
|
MAX_PHASES: 5,
|
||||||
FIRST_PROJ: '__PROJECTS',
|
FIRST_PROJ: '__PROJECTS',
|
||||||
EXECUTE_CALCPROJ: true,
|
EXECUTE_CALCPROJ: true,
|
||||||
|
|
||||||
|
Permissions: {
|
||||||
|
Normal: 0,
|
||||||
|
Admin: 1,
|
||||||
|
},
|
||||||
|
|
||||||
getHostname: function () {
|
getHostname: function () {
|
||||||
return os.hostname()
|
return os.hostname()
|
||||||
},
|
},
|
||||||
|
|||||||
7
server/tools/shared_nodejs.js
Normal file
7
server/tools/shared_nodejs.js
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
module.exports = {
|
||||||
|
|
||||||
|
fieldsUserToChange() {
|
||||||
|
return ['username', 'email', 'name', 'surname', 'perm', 'date_reg']
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user