lora-project/server-api/route/api/user.js

43 lines
1.2 KiB
JavaScript
Raw Normal View History

2017-06-01 14:37:51 +00:00
const Router = require('koa-router');
const router = new Router();
// import tools
const crypto = require('../../libs/crypto.js');
2017-06-02 10:07:25 +00:00
const so = require('../../libs/storeObject');
2017-06-02 14:53:34 +00:00
const mongo = require('../../libs/mongo_model.js');
2017-06-01 14:37:51 +00:00
router
.post('/login', async(c, n) => {
let arr = c.request.body;
2017-06-04 03:54:25 +00:00
if (!arr.data) throw 'CE0000';
if (!arr.data.account) throw 'CE0001';
if (!arr.data.password) throw 'CE0002';
2017-06-01 14:37:51 +00:00
try {
let user = await c.syncQuery('select `uid`,`account`,`password`,`name`,`email` from ??.?? where `account` = ?', ['lora', 'user', arr.data.account])
2017-06-04 03:54:25 +00:00
if (user.length == 0) throw 'CE0003';
2017-06-01 14:37:51 +00:00
2017-06-04 03:54:25 +00:00
if (!crypto.comparePass(arr.data.password, user[0].password)) throw 'CE0003';
2017-06-01 14:37:51 +00:00
delete user[0].password;
c.body = {
record: user
}
} catch (err) {
2017-06-04 03:54:25 +00:00
if(typeof err == 'string') throw err;
c.serr = err;
throw 'SE0000';
2017-06-01 14:37:51 +00:00
}
2017-06-02 10:07:25 +00:00
let u = c.body.record[0];
2017-06-03 13:20:34 +00:00
let token = new mongo.token({ object: u, expire: Date.now() + 86400000 });
2017-06-02 14:53:34 +00:00
token.save();
c.body.rt = {
token: {
id: token._id
}
2017-06-02 10:07:25 +00:00
}
2017-06-01 14:37:51 +00:00
})
module.exports = router;