1 | var jwtDecode = require('jwt-decode');
|
2 | var globalErrorHandler = require('./global-error-handler');
|
3 | var JWTPrefix = "eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.";
|
4 |
|
5 | module.exports = {
|
6 | parseToken: function parseToken(parsedToken, parsedArgs) {
|
7 | try {
|
8 | if (parsedArgs.customerid && parsedArgs.customerid.indexOf(JWTPrefix) == 0) {
|
9 | parsedToken = parsedArgs.customerid;
|
10 | parsedArgs.token = parsedToken;
|
11 | }
|
12 | if (!parsedToken) {
|
13 | throw new Error("Token Must Be Given");
|
14 | }
|
15 | var tokenData = jwtDecode(parsedToken);
|
16 | if (!tokenData["x-sl-server"]) {
|
17 | throw new Error("Doesn't Contain Server");
|
18 | }
|
19 | if (!tokenData["subject"]) {
|
20 | throw new Error("Doesn't Contain Subject");
|
21 | }
|
22 | var customerId = tokenData["subject"];
|
23 | var subjectParts = tokenData["subject"].split("@");
|
24 | if (subjectParts.length >= 1) {
|
25 | customerId = subjectParts[0];
|
26 | }
|
27 | parsedArgs.server = tokenData["x-sl-server"];
|
28 | parsedArgs.customerid = customerId;
|
29 | parsedArgs.isValidToken = true;
|
30 | } catch (err) {
|
31 | globalErrorHandler.setLastError(err, "Token Is Invalid. ");
|
32 | console.error("Token Is Invalid. " + err.stack);
|
33 | parsedArgs.isValidToken = false;
|
34 | }
|
35 | },
|
36 |
|
37 | adjustPathSlashes: function adjustPathSlashes(path) {
|
38 | path = (path || "").replace(/\\/g, '/');
|
39 | return path;
|
40 | },
|
41 |
|
42 | expandCommaSeparatedValues: function expandCommaSeparatedValues(arr, delim) {
|
43 | delim = delim || ',';
|
44 | arr = arr || [];
|
45 | var ret = [];
|
46 | arr.forEach(function (item) {
|
47 | var parts = item.split(delim);
|
48 | ret = ret.concat(parts);
|
49 | })
|
50 | return ret;
|
51 | },
|
52 |
|
53 | getMissingProperties: function getMissingFields(fieldsMap){
|
54 | var missingFields = [];
|
55 | Object.keys(fieldsMap).forEach(function (key){
|
56 | if (fieldsMap[key]) {
|
57 | missingFields.push(key);
|
58 | }
|
59 | });
|
60 | return missingFields.toString();
|
61 | },
|
62 | isMarkupFile: function (extension) {
|
63 | return this.isArrayContainsMarkupFile([extension]);
|
64 | },
|
65 | isArrayContainsMarkupFile: function (extensionsArr) {
|
66 | var MARKUP_FILES_EXTENSIONS_MAP = {'.ftl': true, '.html': true};
|
67 | if(!Array.isArray(extensionsArr)){return false}
|
68 | for(var i = 0; i < extensionsArr.length; i++) {
|
69 | var ext = extensionsArr[i].toLowerCase();
|
70 | if(MARKUP_FILES_EXTENSIONS_MAP[ext] === true){
|
71 | return true;
|
72 | }
|
73 | }
|
74 | return false
|
75 | },
|
76 | distinctArray: function (value, index, array) {
|
77 | return array.indexOf(value) === index;
|
78 | },
|
79 | cloneObject: function (source, logger) {
|
80 | try {
|
81 | return JSON.parse(JSON.stringify(source));
|
82 | }catch (e){
|
83 | logger.error("Failed to clone, returning shallow ");
|
84 | return null;
|
85 | }
|
86 | }
|
87 | }; |
\ | No newline at end of file |