1 | var express = require('express');
|
2 | var router = express.Router();
|
3 | var _ = require('lodash');
|
4 | var Promise = require('bluebird');
|
5 | var security = require('../core/utils/security');
|
6 | var models = require('../models');
|
7 | var middleware = require('../core/middleware');
|
8 | var accountManager = require('../core/services/account-manager')();
|
9 | var AppError = require('../core/app-error')
|
10 | var log4js = require('log4js');
|
11 | var log = log4js.getLogger("cps:accessKey");
|
12 |
|
13 | router.get('/', middleware.checkToken, (req, res, next) => {
|
14 | log.debug('request get acceesKeys')
|
15 | var uid = req.users.id;
|
16 | accountManager.getAllAccessKeyByUid(uid)
|
17 | .then((accessKeys) => {
|
18 | log.debug('acceesKeys:', accessKeys)
|
19 | res.send({accessKeys: accessKeys});
|
20 | })
|
21 | .catch((e) => {
|
22 | next(e);
|
23 | });
|
24 | });
|
25 |
|
26 | router.post('/', middleware.checkToken, (req, res, next) => {
|
27 | var uid = req.users.id;
|
28 | var identical = req.users.identical;
|
29 | var createdBy = _.trim(req.body.createdBy);
|
30 | var friendlyName = _.trim(req.body.friendlyName);
|
31 | var ttl = parseInt(req.body.ttl);
|
32 | var description = _.trim(req.body.description);
|
33 | log.debug(req.body)
|
34 | var newAccessKey = security.randToken(28).concat(identical);
|
35 | return accountManager.isExsitAccessKeyName(uid, friendlyName)
|
36 | .then((data) => {
|
37 | if (!_.isEmpty(data)) {
|
38 | throw new AppError.AppError(`The access key "${friendlyName}" already exists.`);
|
39 | }
|
40 | })
|
41 | .then(() => {
|
42 | return accountManager.createAccessKey(uid, newAccessKey, ttl, friendlyName, createdBy, description);
|
43 | })
|
44 | .then((newToken) => {
|
45 | var moment = require("moment");
|
46 | var info = {
|
47 | name : newToken.tokens,
|
48 | createdTime : parseInt(moment(newToken.created_at).format('x')),
|
49 | createdBy : newToken.created_by,
|
50 | expires : parseInt(moment(newToken.expires_at).format('x')),
|
51 | description : newToken.description,
|
52 | friendlyName: newToken.name,
|
53 | };
|
54 | log.debug(info);
|
55 | res.send({accessKey:info});
|
56 | })
|
57 | .catch((e) => {
|
58 | if (e instanceof AppError.AppError) {
|
59 | log.debug(e)
|
60 | res.status(406).send(e.message);
|
61 | } else {
|
62 | next(e);
|
63 | }
|
64 | });
|
65 | });
|
66 |
|
67 | router.delete('/:name', middleware.checkToken, (req, res, next) => {
|
68 | var name = _.trim(decodeURI(req.params.name));
|
69 | var uid = req.users.id;
|
70 | return models.UserTokens.destroy({where: {name:name, uid: uid}})
|
71 | .then((rowNum) => {
|
72 | log.debug('delete acceesKey:', name)
|
73 | res.send({friendlyName:name});
|
74 | })
|
75 | .catch((e) => {
|
76 | if (e instanceof AppError.AppError) {
|
77 | log.debug(e)
|
78 | res.status(406).send(e.message);
|
79 | } else {
|
80 | next(e);
|
81 | }
|
82 | });
|
83 | });
|
84 | module.exports = router;
|