diff --git a/.env.production b/.env.production index bfbee07..ed96328 100644 --- a/.env.production +++ b/.env.production @@ -1,4 +1,4 @@ -DATABASE =FreePlanet +DATABASE=FreePlanet SEND_EMAIL=1 PORT=3000 URLBASE_APP1=https://freeplanet.app diff --git a/server/middleware/authenticate.js b/server/middleware/authenticate.js index ef1cb7f..1b0b81a 100644 --- a/server/middleware/authenticate.js +++ b/server/middleware/authenticate.js @@ -1,11 +1,14 @@ var {User} = require('../models/user'); +const tools = require('../tools/general'); + var authenticate = (req, res, next) => { var token = req.header('x-auth'); // console.log("TOKEN = " + token); User.findByToken(token).then((user) => { + // tools.mylogshow('userid', user._id) if (!user) { return Promise.reject(); } diff --git a/server/models/todo.js b/server/models/todo.js index 1858101..5f738c2 100644 --- a/server/models/todo.js +++ b/server/models/todo.js @@ -2,6 +2,7 @@ var mongoose = require('mongoose'); const _ = require('lodash'); +const tools = require('../tools/general'); mongoose.Promise = global.Promise; mongoose.level = "F"; @@ -69,8 +70,7 @@ TodoSchema.methods.toJSON = function () { // console.log(todoObject); - return _.pick(todoObject, ['_id', 'userId', 'pos', 'category', 'descr', 'priority', 'completed', 'created_at', 'modify_at', - 'completed_at', 'expiring_at', 'enableExpiring', 'id_prev', 'id_next', 'progress', 'modified']); + return _.pick(todoObject, tools.allfieldTodoWithId()); }; diff --git a/server/router/todos_router.js b/server/router/todos_router.js index 839778d..7360f16 100644 --- a/server/router/todos_router.js +++ b/server/router/todos_router.js @@ -2,6 +2,10 @@ const express = require('express'); const router = express.Router(); const webpush = require('web-push'); +const tools = require('../tools/general'); + +var server_constants = require('../tools/server_constants'); + var { authenticate } = require('../middleware/authenticate'); var mongoose = require('mongoose'); @@ -13,18 +17,27 @@ const _ = require('lodash'); const { ObjectID } = require('mongodb'); -const allfieldTodo = ['userId', 'pos', 'category', 'descr', 'priority', 'completed', 'created_at', 'modify_at', - 'completed_at', 'expiring_at', 'enableExpiring', 'id_prev', 'id_next', 'progress', 'modified']; - -const allfieldTodoWithId = ['_id', ...allfieldTodo]; -router.post('/:id', authenticate, (req, res) => { +router.post('/', authenticate, (req, res) => { - var body = _.pick(req.body, allfieldTodoWithId); + var body = _.pick(req.body, tools.allfieldTodoWithId()); var todo = new Todo(body); - console.log('POST ', todo.descr); + // tools.mylogshow('ID :', todo._id) + + // tools.mylogshow('userid', todo.userId, req.user._id) + + if (!('descr' in req.body)){ + return res.status(400).send({ code: server_constants.RIS_CODE_LOGIN_ERR_GENERIC }); + } + + if (todo.userId !== String(req.user._id)) { + // I'm trying to write something not mine! + return res.status(404).send({ code: server_constants.RIS_CODE_TODO_CREATING_NOTMYUSER }); + } + + tools.mylog('POST ', todo.descr); todo.modified = false; if (!todo.descr) { @@ -34,6 +47,7 @@ router.post('/:id', authenticate, (req, res) => { sendNotificationToUser(todo.userId, 'New Todo', 'New Todo added!', '/' + todo.category, 'todo'); todo.save().then((doc) => { + // tools.mylogshow('ID SAVED :', doc._id) res.send(doc); }).catch((e) => { console.log(e.message); @@ -115,18 +129,24 @@ function sendNotificationToUser(userId, title, content, openUrl, tag) { router.patch('/:id', authenticate, (req, res) => { var id = req.params.id; - var body = _.pick(req.body, allfieldTodo); + var body = _.pick(req.body, tools.allfieldTodo()); if (!ObjectID.isValid(id)) { - console.log('ERROR: id not VALID', id); + tools.mylog('ERROR: id not VALID', id); return res.status(404).send(); } + Todo.findByIdAndUpdate(id, {$set: body}, {new: true}).then((todo) => { if (!todo) { return res.status(404).send(); } + if (todo.userId !== String(req.user._id)) { + // I'm trying to write something not mine! + return res.status(404).send({ code: server_constants.RIS_CODE_TODO_CREATING_NOTMYUSER }); + } + todo.modified = false; res.send({todo}); @@ -140,10 +160,20 @@ router.patch('/:id', authenticate, (req, res) => { router.get('/:userId', authenticate, (req, res) => { var userId = req.params.userId; - console.log('GET : ', req.params); + // tools.mylogshow('GET : ', req.params); + + if (!ObjectID.isValid(userId)) { + return res.status(404).send(); + } + + if (userId !== String(req.user._id)) { + // I'm trying to write something not mine! + return res.status(404).send({ code: server_constants.RIS_CODE_TODO_CREATING_NOTMYUSER }); + } // Extract all the todos of the userId only Todo.findAllByUserId(userId).then((todos) => { + // tools.mylogshow('todos', todos) res.send({ todos }); }).catch((e) => { console.log(e); diff --git a/server/router/users_router.js b/server/router/users_router.js index a5fe313..c8d6b59 100644 --- a/server/router/users_router.js +++ b/server/router/users_router.js @@ -5,6 +5,8 @@ var { User } = require('../models/user'); var sendemail = require('../sendemail'); +const tools = require('../tools/general'); + var server_constants = require('../tools/server_constants'); const _ = require('lodash'); @@ -13,30 +15,18 @@ var reg = require('../reg/registration'); var { authenticate } = require('../middleware/authenticate'); -function testing() { - return (process.env.TESTING_ON === '1') -} - -function mylog(...args) { - if (!testing()) - console.log(args) -} - -function mylogshow(...args) { - console.log(args) -} // POST /users router.post('/', (req, res) => { - mylog("POST /users"); + tools.mylog("POST /users"); var body = _.pick(req.body, ['email', 'password', 'username', 'idapp', 'keyappid', 'lang']); var user = new User(body); - // 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.verified_email = false; - if (testing()) { + if (tools.testing()) { user.verified_email = true; } @@ -44,7 +34,7 @@ router.post('/', (req, res) => { User.findByUsername(user.username) .then((usertrovato) => { - mylog("TROVATO USERNAME ? ", user.username, usertrovato); + tools.mylog("TROVATO USERNAME ? ", user.username, usertrovato); if (usertrovato !== null) { return user.generateAuthToken(); } else { @@ -52,13 +42,13 @@ router.post('/', (req, res) => { return 0; } }).then((token) => { - // mylog("passo il TOKEN: ", token); + // tools.mylog("passo il TOKEN: ", token); res.header('x-auth', token).send(user); - // mylog("LINKREG = " + user.linkreg); + // tools.mylog("LINKREG = " + user.linkreg); // Invia un'email all'utente - // mylog('process.env.TESTING_ON', process.env.TESTING_ON); - if (!testing()) { + // tools.mylog('process.env.TESTING_ON', process.env.TESTING_ON); + if (!tools.testing()) { sendemail.sendEmail_Registration(res.locale, user.email, user.username, user.idapp, user.linkreg); } @@ -86,9 +76,9 @@ router.post('/login', (req, res) => { var body = _.pick(req.body, ['username', 'password', 'idapp', 'keyappid', 'lang']); var user = new User(body); - mylogshow("username: " + user.username + " pwd = " + user.password); + tools.mylog("username: " + user.username + " pwd = " + user.password); - mylogshow("user REC:", user); + tools.mylog("user REC:", user); if (body.keyappid !== process.env.KEY_APP_ID) return res.status(400).send(); @@ -96,9 +86,9 @@ router.post('/login', (req, res) => { User.findByCredentials(user.username, user.password) .then((user) => { - mylogshow("CREDENZIALI ! "); + tools.mylog("CREDENZIALI ! "); if (!user) { - mylogshow("NOT FOUND !"); + tools.mylogshow("NOT FOUND !"); res.status(404).send({ code: server_constants.RIS_CODE_LOGIN_ERR }); } else { return user.generateAuthToken().then((token) => { @@ -108,23 +98,23 @@ router.post('/login', (req, res) => { usertosend.userId = user._id.toHexString(); usertosend.verified_email = user.verified_email; - // mylog("user.verified_email:" + user.verified_email); - // mylog("usertosend.userId", usertosend.userId); + // tools.mylog("user.verified_email:" + user.verified_email); + // tools.mylog("usertosend.userId", usertosend.userId); - // mylog("usertosend:"); - // mylog(usertosend); + // tools.mylog("usertosend:"); + // tools.mylog(usertosend); res.header('x-auth', token).send(usertosend); - // mylog("TROVATOOO!"); + // tools.mylog("TROVATOOO!"); }); } }).catch((e) => { - mylog("ERR: " + e); + tools.mylog("ERR: " + e); res.status(400).send({ code: server_constants.RIS_CODE_LOGIN_ERR_GENERIC }); }); }); router.delete('/me/token', authenticate, (req, res) => { - mylog("TOKENREM = " + req.token); + tools.mylog("TOKENREM = " + req.token); req.user.removeToken(req.token).then(() => { res.status(200).send(); }, () => { diff --git a/server/sendemail.js b/server/sendemail.js index 2c32772..1aa75f2 100644 --- a/server/sendemail.js +++ b/server/sendemail.js @@ -1,4 +1,4 @@ -var tools = require('./tools/general'); +const tools = require('./tools/general'); const Email = require('email-templates'); @@ -6,7 +6,7 @@ var i18n = require("i18n"); const previewEmail = require('preview-email'); -var nodemailer = require("nodemailer"); +const nodemailer = require("nodemailer"); const transport_preview = nodemailer.createTransport({ jsonTransport: true diff --git a/server/tests/seed/seed.js b/server/tests/seed/seed.js index 64f5f9b..a7288af 100644 --- a/server/tests/seed/seed.js +++ b/server/tests/seed/seed.js @@ -6,21 +6,26 @@ const { User } = require('./../../models/user'); var bcrypt = require('bcrypt'); +const tools = require('../../tools/general'); + +let myuserIdOne = ''; + const userOneId = new ObjectID(); const userTwoId = new ObjectID(); -const userThreeId = new ObjectID(); +// const userThreeId = new ObjectID(); -// let mypwdchiaro = 'mypassword@1A'; // let mypwdcrypt = bcrypt.hash(mypwdchiaro, bcrypt.genSaltSync(12)) // .then((hashedPassword) => { // console.log('pwd=',hashedPassword); // }); // String(mypwdcrypt) + +let mypwdchiaro = 'mypassword@1A'; let mypwdcrypted = '$2b$12$mteST.isuWO0SNsfeZ0aCe.Dz3qwPh5SU8t9rc5SaPTkb3j0ywGv6' -const users = [ { - _id: userTwoId, +const users = [{ + _id: userOneId, keyappid: process.env.KEY_APP_ID, lang: 'it', idapp: '1', @@ -33,7 +38,7 @@ const users = [ { }] }, { - _id: userThreeId, + _id: userTwoId, keyappid: process.env.KEY_APP_ID, lang: 'it', idapp: '1', @@ -45,7 +50,7 @@ const users = [ { token: jwt.sign({ _id: userTwoId, access: 'auth' }, process.env.SIGNCODE).toString() }] }, { - keyappid: process.env.KEY_APP_ID, + keyappid: process.env.KEY_APP_ID, // RECORD CHE VERRA' UTILIZZATO PER UNA NUOVA REGISTRAZIONE lang: 'it', idapp: '1', email: 'pao.loarena77@gmail.com', @@ -60,35 +65,106 @@ const userjson = JSON.stringify(users[0]); const todos = [{ _id: new ObjectID(), - text: 'First test todo', - _creator: userOneId + category: "personal", + completed: false, + completed_at: 0, + created_at: 6, + descr: "Primo Task Esempio", + enableExpiring: false, + expiring_at: 16, + id_next: "10000000", + id_prev: "0", + modified: false, + modify_at: 6, + pos: 1, + priority: 1, + progress: 0, + userId: users[0]._id }, { _id: new ObjectID(), - text: 'Second test todo', - completed: true, - completedAt: 333, - _creator: userTwoId + category: "personal", + completed: false, + completed_at: 0, + created_at: 6, + descr: "Secondo Task Esempio", + enableExpiring: false, + expiring_at: 16, + id_next: "10000000", + id_prev: "1", + modified: false, + modify_at: 6, + pos: 2, + priority: 1, + progress: 0, + userId: users[0]._id +}, { + _id: new ObjectID(), + category: "personal", + completed: false, + completed_at: 0, + created_at: 6, + descr: "Terzo Task Esempio", + enableExpiring: false, + expiring_at: 16, + id_next: "10000000", + id_prev: "1", + modified: false, + modify_at: 6, + pos: 3, + priority: 1, + progress: 0, + userId: users[1]._id +}, { // RECORD CHE VERRA' UTILIZZATO PER AGGIUNGERE UN NUOVO TASK + _id: new ObjectID(), + category: "personal", + completed: false, + completed_at: 0, + created_at: 6, + descr: "Nuovo Quarto Task Esempio da Inserire", + enableExpiring: false, + expiring_at: 16, + id_next: "10000000", + id_prev: "2", + modified: false, + modify_at: 6, + pos: 4, + priority: 1, + progress: 0, + userId: users[0]._id }]; const populateTodos = (done) => { - const lista = [ users[0]._id, users[1]._id, users[2]._id]; - Todo.deleteMany({ userId: {$in: lista } }) + + Todo.deleteMany({}) .then(() => { - return Todo.insertMany(todos); - }).then(() => done()) + + var TodoOne = new Todo(todos[0]).save(); + var TodoTwo = new Todo(todos[1]).save(); + + return Promise.all([TodoOne, TodoTwo]) + }).then(() => { + done() + + // tools.mylogshow('todos[0]', todos[0]._id); + // tools.mylogshow('todos[1]', todos[1]._id); + + + }); + }; const populateUsers = (done) => { - const lista = [ users[0].username, users[1].username, users[2].username]; - // const lista = [ "aa"] - User.deleteMany({ username: {$in: lista } }) + + User.deleteMany({}) .then(() => { + // console.log('users[0]', users[0]) var userOne = new User(users[0]).save(); var userTwo = new User(users[1]).save(); return Promise.all([userOne, userTwo]) }).then(() => done()); + }; -module.exports = { todos, populateTodos, users, populateUsers, userjson, mypwdcrypted }; +module.exports = { todos, populateTodos, users, populateUsers, userjson, mypwdcrypted, mypwdchiaro }; diff --git a/server/tests/server.test.js b/server/tests/server.test.js index 48eda06..9be79fd 100644 --- a/server/tests/server.test.js +++ b/server/tests/server.test.js @@ -5,7 +5,9 @@ const { ObjectID } = require('mongodb'); const { app } = require('./../server'); const { Todo } = require('./../models/todo'); const { User } = require('./../models/user'); -const { todos, populateTodos, users, populateUsers, userjson } = require('./seed/seed'); +const { todos, populateTodos, users, populateUsers, userjson, mypwdcrypted, mypwdchiaro } = require('./seed/seed'); + +const tools = require('../tools/general'); // const { debug } = require('debug'); // const log = debug('server'); @@ -23,6 +25,8 @@ beforeEach(populateUsers); beforeEach(populateTodos); const IndexUserToCreate = 2; +const IndexTodoToCreate = 3; + // console.log('UserOne:', users[0]); // console.log('UserTwo:', users[0]); @@ -98,7 +102,7 @@ describe('POST /users/login', () => { .set('x-auth', users[0].tokens[0].token) .send({ username: users[0].username, - password: users[0].password, + password: mypwdchiaro, idapp: users[0].idapp, keyappid: users[0].keyappid, lang: users[0].lang, @@ -121,13 +125,13 @@ describe('POST /users/login', () => { }).catch((e) => done(e)); }); }); -/* + it('should reject invalid login', (done) => { request(app) .post('/users/login') .send({ - email: users[1].email, - password: users[1].password + '1' + username: users[0].username, + password: mypwdchiaro + '1' }) .expect(400) .expect((res) => { @@ -144,42 +148,78 @@ describe('POST /users/login', () => { }).catch((e) => done(e)); }); }); - */ + }); - - - - - - -describe('POST /todos', () => { - /* - it('should create a new Todos', (done) => { +describe('DELETE /users/me/token', () => { + it('should logout user deleting auth token', (done) => { request(app) - .post('/todos') + .delete('/users/me/token') .set('x-auth', users[0].tokens[0].token) - .send(users[0]) + .send() .expect(200) .expect((res) => { - expect(res.body.text).toBe(text); + expect(res.headers['x-auth']).toNotExist(); }) .end((err, res) => { if (err) { return done(err); } - Todo.find({ text }).then((todos) => { - expect(todos.length).toBe(1); - expect(todos[0].text).toBe(text); + done(); + }); + }); + + it('should return 401 deleting an invalid token', (done) => { + request(app) + .delete('/users/me/token') + .set('x-auth', users[0].tokens[0].token + '1') + .send() + .expect(401) + .end((err, res) => { + if (err) { + return done(err); + } + + done(); + }); + }); +}); + + +describe('POST /todos', () => { + + it('should create a new Todos', (done) => { + request(app) + .post('/todos') + .set('x-auth', users[0].tokens[0].token) + .send(todos[IndexTodoToCreate]) + .expect(200) + .end((err, res) => { + if (err) { + return done(err); + } + + Todo.find({ descr: todos[IndexTodoToCreate].descr }).then((arr_todos) => { + expect(arr_todos.length).toBe(1); + expect(arr_todos[0].descr).toBe(todos[IndexTodoToCreate].descr); + expect(String(arr_todos[0]._id)).toBe(String(todos[IndexTodoToCreate]._id)); + expect(String(arr_todos[0].userId)).toBe(String(users[0]._id)); done(); }).catch((e) => done(e)); }); }); - */ -}) -/* + it('should return 404 if not authenticated', (done) => { + request(app) + .post('/todos') + .set('x-auth', users[0].tokens[0].token) + .send(todos[IndexTodoToCreate]) + .expect(404) + .end((err) => { + done(); + }); + }); it('should not create todo with invalid body data', (done) => { request(app) @@ -193,7 +233,6 @@ describe('POST /todos', () => { } Todo.find().then((todos) => { - expect(todos.length).toBe(2); done(); }).catch((e) => done(e)); }); @@ -203,43 +242,50 @@ describe('POST /todos', () => { describe('GET /todos', () => { it('should get all todos', (done) => { request(app) - .get('/todos') + .get(`/todos/${users[0]._id }`) .set('x-auth', users[0].tokens[0].token) .expect(200) .expect((res) => { - expect(res.body.todos.length).toBe(1); + expect(res.body.todos.length).toBe(2); }) .end(done); }); }); + describe('GET /todos/:id', () => { - it('should return todo doc', (done) => { + it('should return todos of the User', (done) => { request(app) - .get(`/todos/${todos[0]._id.toHexString()}`) + .get(`/todos/${todos[0].userId}`) .set('x-auth', users[0].tokens[0].token) .expect(200) .expect((res) => { - expect(res.body.todo.text).toBe(todos[0].text); + let miores = res + let miadescr = miores.body.todos[0].descr + expect(res.body.todos.length).toBe(2); + expect(miadescr).toBe(todos[0].descr); }) .end(done); }); it('should not return todo doc created by other user', (done) => { request(app) - .get(`/todos/${todos[1]._id.toHexString()}`) + .get(`/todos/${todos[2].userId}`) .set('x-auth', users[0].tokens[0].token) .expect(404) .end(done); }); - it('should return 404 if todo not found', (done) => { + it('should return [] if user not found', (done) => { var hexId = new ObjectID().toHexString(); request(app) - .get(`/todos/${hexId}`) + .get(`/todos/${users[0]._id + '111'}`) .set('x-auth', users[0].tokens[0].token) .expect(404) + .expect((res) => { + expect(res.body.todos).toBe(undefined); + }) .end(done); }); @@ -254,11 +300,11 @@ describe('GET /todos/:id', () => { describe('DELETE /todos/:id', () => { it('should remove a todo', (done) => { - var hexId = todos[1]._id.toHexString(); + var hexId = todos[0]._id.toHexString(); request(app) .delete(`/todos/${hexId}`) - .set('x-auth', users[1].tokens[0].token) + .set('x-auth', users[0].tokens[0].token) .expect(200) .expect((res) => { expect(res.body.todo._id).toBe(hexId); @@ -275,31 +321,12 @@ describe('DELETE /todos/:id', () => { }); }); - it('should remove a todo', (done) => { - var hexId = todos[0]._id.toHexString(); - - request(app) - .delete(`/todos/${hexId}`) - .set('x-auth', users[1].tokens[0].token) - .expect(404) - .end((err, res) => { - if (err) { - return done(err); - } - - Todo.findById(hexId).then((todo) => { - expect(todo).toExist(); - done(); - }).catch((e) => done(e)); - }); - }); - it('should return 404 if todo not found', (done) => { var hexId = new ObjectID().toHexString(); request(app) .delete(`/todos/${hexId}`) - .set('x-auth', users[1].tokens[0].token) + .set('x-auth', users[0].tokens[0].token) .expect(404) .end(done); }); @@ -307,7 +334,7 @@ describe('DELETE /todos/:id', () => { it('should return 404 if object id is invalid', (done) => { request(app) .delete('/todos/123abc') - .set('x-auth', users[1].tokens[0].token) + .set('x-auth', users[0].tokens[0].token) .expect(404) .end(done); }); @@ -316,60 +343,68 @@ describe('DELETE /todos/:id', () => { describe('PATCH /todos/:id', () => { it('should update the todo', (done) => { var hexId = todos[0]._id.toHexString(); - var text = 'This should be the new text'; + var descr = 'This should be the new text'; request(app) .patch(`/todos/${hexId}`) .set('x-auth', users[0].tokens[0].token) .send({ completed: true, - text + descr }) .expect(200) .expect((res) => { - expect(res.body.todo.text).toBe(text); + expect(res.body.todo.descr).toBe(descr); expect(res.body.todo.completed).toBe(true); - expect(res.body.todo.completedAt).toBeA('number'); + // expect(res.body.todo.completedAt).toBeA('number'); }) .end(done); }); it('should not update the todo created by other user', (done) => { var hexId = todos[0]._id.toHexString(); - var text = 'This should be the new text'; + var descr = 'This should be the new text'; request(app) .patch(`/todos/${hexId}`) .set('x-auth', users[1].tokens[0].token) .send({ completed: true, - text + descr }) .expect(404) .end(done); }); - it('should clear completedAt when todo is not completed', (done) => { - var hexId = todos[1]._id.toHexString(); - var text = 'This should be the new text!!'; - - request(app) - .patch(`/todos/${hexId}`) - .set('x-auth', users[1].tokens[0].token) - .send({ - completed: false, - text - }) - .expect(200) - .expect((res) => { - expect(res.body.todo.text).toBe(text); - expect(res.body.todo.completed).toBe(false); - expect(res.body.todo.completedAt).toNotExist(); - }) - .end(done); - }); + // it('should clear completedAt when todo is not completed', (done) => { + // var hexId = todos[1]._id.toHexString(); + // var text = 'This should be the new text!!'; + // + // request(app) + // .patch(`/todos/${hexId}`) + // .set('x-auth', users[1].tokens[0].token) + // .send({ + // completed: false, + // text + // }) + // .expect(200) + // .expect((res) => { + // expect(res.body.todo.text).toBe(text); + // expect(res.body.todo.completed).toBe(false); + // expect(res.body.todo.completedAt).toNotExist(); + // }) + // .end(done); + // }); }); +/* + +}); + + + + + describe('GET /users/me', () => { it('should return user if authenticated', (done) => { request(app) @@ -383,10 +418,10 @@ describe('GET /users/me', () => { .end(done); }); - it('should return 401 if not authenticated', (done) => { + it('should return 404 if not authenticated', (done) => { request(app) .get('/users/me') - .expect(401) + .expect(404) .expect((res) => { expect(res.body).toEqual({}); }) diff --git a/server/tools/general.js b/server/tools/general.js index 084da68..1211b8e 100644 --- a/server/tools/general.js +++ b/server/tools/general.js @@ -3,5 +3,27 @@ var os = require("os"); module.exports = { getHostname: function () { return os.hostname() + }, + testing: function () { + return (process.env.TESTING_ON === '1') + }, + + mylog: function (...args) { + if (!this.testing()) + console.log(args) + }, + + mylogshow: function (...args) { + console.log(args) + }, + + allfieldTodo: function () { + return ['userId', 'pos', 'category', 'descr', 'priority', 'completed', 'created_at', 'modify_at', + 'completed_at', 'expiring_at', 'enableExpiring', 'id_prev', 'id_next', 'progress', 'modified'] + }, + + allfieldTodoWithId: function () { + return ['_id', ...this.allfieldTodo()] } + }; diff --git a/server/tools/server_constants.js b/server/tools/server_constants.js index e9ce543..cbac4f8 100644 --- a/server/tools/server_constants.js +++ b/server/tools/server_constants.js @@ -1,10 +1,13 @@ module.exports = Object.freeze({ + RIS_CODE_TODO_CREATING_NOTMYUSER: -1001, + RIS_CODE_ERR: -99, RIS_CODE_EMAIL_ALREADY_VERIFIED: -5, RIS_CODE_EMAIL_VERIFIED: 1, - RIS_CODE_OK: 1, RIS_CODE_LOGIN_ERR_GENERIC: -20, RIS_CODE_LOGIN_ERR: -10, + RIS_CODE_OK: 1, + RIS_CODE_LOGIN_OK: 1, });