-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathsource-controller.js
More file actions
121 lines (109 loc) · 3.25 KB
/
Copy pathsource-controller.js
File metadata and controls
121 lines (109 loc) · 3.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
const ConfirmedError = require("shared/error");
const Logger = require("shared/logger");
// Middleware
const authenticate = require("../middleware/authenticate.js");
const { check, body, query } = require("express-validator/check");
const validateCheck = require("../middleware/validate-check.js");
// Utilities
const { Email } = require("shared/utilities");
// Models
const { Source } = require("shared/models");
// Constants
const DOMAIN = process.env.DOMAIN;
// Routes
const router = require("express").Router();
/*********************************************
*
* New Source
*
*********************************************/
router.post("/new-source",
[
authenticate,
body("id")
.exists().withMessage("Missing id.")
.not().isEmpty().withMessage("Missing id.")
.isAlphanumeric()
.isLowercase().withMessage("Source Id must be lowercase.")
.isLength({ min: 1, max: 25 }).withMessage("ID must be between 1 and 25 characters."),
validateCheck
],
(request, response, next) => {
const id = request.values.id;
return Source.createWithId(id)
.then(id => {
Email.sendAdminAlert("New Source Created.",
`Source ID: ${id}
IP: ${request.ip}
Time: ${new Date()}`);
request.flashRedirect("success", "Source created successfully.", "/sources");
})
.catch( error => next(error) );
});
router.post("/set-current-source",
[
authenticate,
body("id")
.exists().withMessage("Missing id.")
.not().isEmpty().withMessage("Missing id.")
.isAlphanumeric()
.isLength({ min: 1, max: 25 }).withMessage("ID must be between 1 and 25 characters."),
validateCheck
],
(request, response, next) => {
const id = request.values.id;
return Source.setCurrent(id)
.then(id => {
Email.sendAdminAlert("Current Source Changed.",
`Source ID: ${id}
IP: ${request.ip}
Time: ${new Date()}`);
request.flashRedirect("success", "Current source set successfully.", "/sources");
})
.catch( error => next(error) );
});
router.post("/get-unassigned-certificates",
[
authenticate,
body("id")
.exists().withMessage("Missing id.")
.not().isEmpty().withMessage("Missing id.")
.isAlphanumeric()
.isLength({ min: 1, max: 25 }).withMessage("ID must be between 1 and 25 characters."),
validateCheck
],
(request, response, next) => {
const id = request.values.id;
return Source.getUnassignedCertificatesCount(id)
.then(result => {
response.status(200).json({
count: result
});
})
.catch( error => next(error) );
});
router.post("/generate-certificates",
[
authenticate,
body("id")
.exists().withMessage("Missing id.")
.not().isEmpty().withMessage("Missing id.")
.isAlphanumeric()
.isLength({ min: 1, max: 25 }).withMessage("ID must be between 1 and 25 characters."),
body("num")
.exists().withMessage("Missing num.")
.not().isEmpty().withMessage("Missing num.")
.isNumeric(),
validateCheck
],
(request, response, next) => {
const id = request.values.id;
const num = request.values.num;
Email.sendAdminAlert("Generating Source Certificates.",
`Source ID: ${id}
Number: ${num}
Time: ${new Date()}`);
Source.generateCertificates(id, num);
request.flashRedirect("success", "Certificate generation started.", "/sources");
});
module.exports = router;