serverpreconfigured 1.0.7 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/auth/auth.js CHANGED
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.userIsLogged = void 0;
3
4
  const secureget_1 = require("../sessions/secureget");
4
5
  const config_1 = require("./config");
5
6
  function userIsLogged(req) {
6
- let user = secureget_1.getSessionValue(req, config_1.SESSION_LOGGED_DATA);
7
+ let user = (0, secureget_1.getSessionValue)(req, config_1.SESSION_LOGGED_DATA);
7
8
  if (user)
8
9
  return true;
9
10
  return false;
@@ -1,3 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SESSION_LOGGED_DATA = void 0;
3
4
  exports.SESSION_LOGGED_DATA = 'email';
@@ -1 +1,2 @@
1
- export declare const dataBase: any;
1
+ import { Sequelize } from "sequelize";
2
+ export declare const dataBase: Sequelize;
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.dataBase = void 0;
6
7
  //@ts-ignore
7
8
  //@ts-nocheck
8
9
  const sequelize_1 = require("sequelize");
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.User = void 0;
3
4
  const sequelize_1 = require("sequelize");
4
5
  const sequelize_2 = require("sequelize");
5
6
  class User extends sequelize_1.Model {
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebSocketAuth = void 0;
3
4
  const sequelize_1 = require("sequelize");
4
5
  const sequelize_2 = require("sequelize");
5
6
  class WebSocketAuth extends sequelize_1.Model {
@@ -15,7 +15,7 @@ class ExpressServer {
15
15
  this.authBaseUrl = "";
16
16
  this.wsAuthBaseUrl = "";
17
17
  this.usePort = env_1.default.PORT;
18
- this.app = express_1.default();
18
+ this.app = (0, express_1.default)();
19
19
  this.initModules();
20
20
  }
21
21
  listen(port = null) {
@@ -24,9 +24,9 @@ class ExpressServer {
24
24
  this.app.listen(this.usePort);
25
25
  }
26
26
  initModules() {
27
- sessions_1.initSessions(this.app);
28
- postreader_1.initPostReader(this.app);
29
- initcors_1.initCors(this.app);
27
+ (0, sessions_1.initSessions)(this.app);
28
+ (0, postreader_1.initPostReader)(this.app);
29
+ (0, initcors_1.initCors)(this.app);
30
30
  }
31
31
  initAuthSystem(baseUrl = '/user') {
32
32
  this.authBaseUrl = baseUrl;
@@ -0,0 +1 @@
1
+ export declare function setUserDataMiddleware(req: any, res: any, next: any): Promise<any>;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.setUserDataMiddleware = void 0;
16
+ const server_1 = require("../server");
17
+ const server_2 = require("../server");
18
+ const server_3 = require("../server");
19
+ const server_4 = require("../server");
20
+ const env_1 = __importDefault(require("../settings/env"));
21
+ const DEBUG = env_1.default.NODE_ENV === 'development' ? true : false;
22
+ function setUserDataMiddleware(req, res, next) {
23
+ return __awaiter(this, void 0, void 0, function* () {
24
+ if (!(0, server_1.userIsLogged)(req))
25
+ return res.status(401).send((0, server_2.JSONResponse)(false, undefined, "User Must Be Logged"));
26
+ try {
27
+ const dealerEmail = (0, server_3.getUserSessionData)(req);
28
+ const dealerId = yield (0, server_4.getUserIdByUserEmail)(dealerEmail);
29
+ req.user = { email: dealerEmail, id: dealerId };
30
+ next();
31
+ }
32
+ catch (e) {
33
+ let more = null;
34
+ if (DEBUG)
35
+ more = e;
36
+ return res.status(500).send((0, server_2.JSONResponse)(false, undefined, "Get dealer data error", more));
37
+ }
38
+ });
39
+ }
40
+ exports.setUserDataMiddleware = setUserDataMiddleware;
@@ -0,0 +1 @@
1
+ export declare function checkAndFilterPostParams(req: any, res: any, next: any): void;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkAndFilterPostParams = void 0;
4
+ function checkAndFilterPostParams(req, res, next) {
5
+ }
6
+ exports.checkAndFilterPostParams = checkAndFilterPostParams;
@@ -0,0 +1 @@
1
+ export declare function checkWSAuth(ws: any, msg: any): Promise<boolean>;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.checkWSAuth = void 0;
16
+ const random_1 = require("../utils/string/random");
17
+ const wsauth_1 = require("../wsauth/wsauth");
18
+ const response_1 = require("../utils/response");
19
+ const server_1 = require("../server");
20
+ const meta_sanitizer_1 = __importDefault(require("meta-sanitizer"));
21
+ const DEBUG = true;
22
+ function checkWSAuth(ws, msg) {
23
+ return __awaiter(this, void 0, void 0, function* () {
24
+ try {
25
+ if (ws.userId && ws.connectionToken) {
26
+ if ((yield (0, wsauth_1.checkConnectionAuth)(ws.userId, ws.connectionToken)))
27
+ return true;
28
+ }
29
+ const message = JSON.parse(msg);
30
+ if (message.action === "Authenticate") {
31
+ const token = meta_sanitizer_1.default.justCharsAndNumbers(message.token, false);
32
+ const userId = parseInt(meta_sanitizer_1.default.justNumbers(message.userId, false));
33
+ const connectionToken = (0, random_1.randomString)(35);
34
+ if ((yield (0, server_1.authenticateWS)(userId, token, connectionToken))) {
35
+ ws.userId = userId;
36
+ ws.connectionToken = connectionToken;
37
+ return true;
38
+ }
39
+ else {
40
+ return sendError(false, "Invalid Token or UserID");
41
+ }
42
+ }
43
+ else {
44
+ return sendError(false, "Need auth", "'action'='Authenticate' and must have 'token' and 'userId'");
45
+ }
46
+ }
47
+ catch (e) {
48
+ return sendError(false, "Internal Error", "", e);
49
+ }
50
+ function sendError(isOk, message, errorMessage = "", data = {}) {
51
+ ws.send((0, response_1.WSResponse)(isOk, message, errorMessage, data));
52
+ return false;
53
+ }
54
+ });
55
+ }
56
+ exports.checkWSAuth = checkWSAuth;
@@ -3,10 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.initCors = void 0;
6
7
  const cors_1 = __importDefault(require("cors"));
7
8
  const env_1 = __importDefault(require("../settings/env"));
8
9
  function initCors(app) {
9
10
  if (env_1.default.ALLOW_CORS)
10
- app.use(cors_1.default());
11
+ app.use((0, cors_1.default)());
11
12
  }
12
13
  exports.initCors = initCors;
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.initPostReader = void 0;
6
7
  const express_1 = __importDefault(require("express"));
7
8
  function initPostReader(app) {
8
9
  app.use(express_1.default.json());
@@ -3,11 +3,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.initSessions = void 0;
6
7
  const express_session_1 = __importDefault(require("express-session"));
7
8
  const env_1 = __importDefault(require("../settings/env"));
8
9
  function initSessions(app) {
9
10
  app.set('trust proxy', 1); // trust first proxy
10
- app.use(express_session_1.default({
11
+ app.use((0, express_session_1.default)({
11
12
  secret: 'keyboard cat',
12
13
  resave: false,
13
14
  saveUninitialized: true,
@@ -20,11 +20,14 @@ const auth_1 = require("../auth/auth");
20
20
  const meta_sanitizer_1 = __importDefault(require("meta-sanitizer"));
21
21
  const users_1 = require("../users/users");
22
22
  const users_2 = require("../users/users");
23
+ const env_1 = __importDefault(require("../settings/env"));
24
+ const DEBUG = env_1.default.NODE_ENV === 'development' ? true : false;
23
25
  var LoginErrorCode;
24
26
  (function (LoginErrorCode) {
25
27
  LoginErrorCode[LoginErrorCode["NoError"] = 0] = "NoError";
26
28
  LoginErrorCode[LoginErrorCode["InvalidParams"] = 1] = "InvalidParams";
27
29
  LoginErrorCode[LoginErrorCode["InvalidPassword"] = 2] = "InvalidPassword";
30
+ LoginErrorCode[LoginErrorCode["InternalError"] = 3] = "InternalError";
28
31
  })(LoginErrorCode || (LoginErrorCode = {}));
29
32
  var RegisterUserErrorCode;
30
33
  (function (RegisterUserErrorCode) {
@@ -36,11 +39,11 @@ var RegisterUserErrorCode;
36
39
  const router = express_1.default.Router();
37
40
  router.post('/logout', (req, res) => {
38
41
  let is_ok = false;
39
- if (auth_1.userIsLogged(req)) {
40
- secureset_1.deleteSessionValue(req, config_1.SESSION_LOGGED_DATA);
42
+ if ((0, auth_1.userIsLogged)(req)) {
43
+ (0, secureset_1.deleteSessionValue)(req, config_1.SESSION_LOGGED_DATA);
41
44
  is_ok = true;
42
45
  }
43
- res.send(response_1.JSONResponse(is_ok, 0, is_ok ? "" : "User Must be logged", {}));
46
+ res.send((0, response_1.JSONResponse)(is_ok, 0, is_ok ? "" : "User Must be logged", {}));
44
47
  });
45
48
  router.post('/login', (req, res) => __awaiter(void 0, void 0, void 0, function* () {
46
49
  let email = "";
@@ -50,16 +53,24 @@ router.post('/login', (req, res) => __awaiter(void 0, void 0, void 0, function*
50
53
  password = meta_sanitizer_1.default.queryProtector(req.body.password);
51
54
  }
52
55
  catch (e) {
53
- return res.send(response_1.JSONResponse(false, LoginErrorCode.InvalidParams, "Must have 'email' and 'password' params"));
56
+ return res.send((0, response_1.JSONResponse)(false, LoginErrorCode.InvalidParams, "Must have 'email' and 'password' params"));
54
57
  }
55
58
  if (password == "" || email == "")
56
- return res.send(response_1.JSONResponse(false, LoginErrorCode.InvalidParams, "Must have 'email' and 'password' params"));
57
- const checkPass = yield users_1.checkUserPassword(email, password);
58
- if (checkPass) {
59
- secureset_1.setSessionValue(req, config_1.SESSION_LOGGED_DATA, email);
60
- return res.send(response_1.JSONResponse(true, LoginErrorCode.NoError, "Login Ok"));
59
+ return res.send((0, response_1.JSONResponse)(false, LoginErrorCode.InvalidParams, "Must have 'email' and 'password' params"));
60
+ try {
61
+ const checkPass = yield (0, users_1.checkUserPassword)(email, password);
62
+ if (checkPass) {
63
+ (0, secureset_1.setSessionValue)(req, config_1.SESSION_LOGGED_DATA, email);
64
+ return res.send((0, response_1.JSONResponse)(true, LoginErrorCode.NoError, "Login Ok"));
65
+ }
66
+ return res.send((0, response_1.JSONResponse)(false, LoginErrorCode.InvalidPassword, "Invalid Password"));
67
+ }
68
+ catch (e) {
69
+ let more = null;
70
+ if (DEBUG)
71
+ more = e;
72
+ return res.send((0, response_1.JSONResponse)(false, LoginErrorCode.InternalError, "I-Error", more));
61
73
  }
62
- return res.send(response_1.JSONResponse(false, LoginErrorCode.InvalidPassword, "Invalid Password"));
63
74
  }));
64
75
  router.post('/register', (req, res) => __awaiter(void 0, void 0, void 0, function* () {
65
76
  try {
@@ -67,14 +78,14 @@ router.post('/register', (req, res) => __awaiter(void 0, void 0, void 0, functio
67
78
  let password = meta_sanitizer_1.default.queryProtector(req.body.password || '');
68
79
  let name = meta_sanitizer_1.default.SanitizerEngine(req.body.name || '', true, false, [' ']).sanitizedData;
69
80
  if (email == "" || password == "" || name == "")
70
- return res.send(response_1.JSONResponse(false, RegisterUserErrorCode.InvalidParams, "Invalid params"));
71
- yield users_2.createUser({ first_name: name, email: email, password_string: password });
72
- return res.send(response_1.JSONResponse(true, RegisterUserErrorCode.NoError, "", "REGISTER OK"));
81
+ return res.send((0, response_1.JSONResponse)(false, RegisterUserErrorCode.InvalidParams, "Invalid params"));
82
+ yield (0, users_2.createUser)({ first_name: name, email: email, password_string: password });
83
+ return res.send((0, response_1.JSONResponse)(true, RegisterUserErrorCode.NoError, "", "REGISTER OK"));
73
84
  }
74
85
  catch (e) {
75
86
  if (e === "User exist")
76
- return res.send(response_1.JSONResponse(false, RegisterUserErrorCode.UserExist, "User Exist"));
77
- return res.send(response_1.JSONResponse(false, RegisterUserErrorCode.InternalError, "I-Error"));
87
+ return res.send((0, response_1.JSONResponse)(false, RegisterUserErrorCode.UserExist, "User Exist"));
88
+ return res.send((0, response_1.JSONResponse)(false, RegisterUserErrorCode.InternalError, "I-Error"));
78
89
  }
79
90
  }));
80
91
  exports.default = router;
@@ -12,14 +12,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.router = void 0;
15
16
  const express_1 = __importDefault(require("express"));
16
17
  const response_1 = require("../utils/response");
17
- const auth_1 = require("../auth/auth");
18
18
  const wsauth_1 = require("../wsauth/wsauth");
19
- const users_1 = require("../users/users");
20
- const server_1 = require("../server");
21
- const config_1 = require("../auth/config");
19
+ const env_1 = __importDefault(require("../settings/env"));
20
+ const auth_1 = require("../middlewares/auth");
22
21
  exports.router = express_1.default.Router();
22
+ const DEBUG = env_1.default.NODE_ENV === 'development' ? true : false;
23
23
  var GenerateTokenError;
24
24
  (function (GenerateTokenError) {
25
25
  GenerateTokenError[GenerateTokenError["UserMustBeLogged"] = 1] = "UserMustBeLogged";
@@ -27,19 +27,19 @@ var GenerateTokenError;
27
27
  GenerateTokenError[GenerateTokenError["InternalError"] = 3] = "InternalError";
28
28
  })(GenerateTokenError || (GenerateTokenError = {}));
29
29
  ;
30
- exports.router.post('/gettoken', (req, res) => __awaiter(void 0, void 0, void 0, function* () {
31
- if (!auth_1.userIsLogged(req))
32
- return res.send(response_1.JSONResponse(false, GenerateTokenError.UserMustBeLogged, "User Must Be Logged"));
30
+ exports.router.post('/gettoken', auth_1.setUserDataMiddleware, (req, res) => __awaiter(void 0, void 0, void 0, function* () {
33
31
  try {
34
- let userId = yield users_1.getUserIdByUserEmail(server_1.getSessionValue(req, config_1.SESSION_LOGGED_DATA));
35
- if (userId == NaN)
36
- return res.send(response_1.JSONResponse(false, GenerateTokenError.GetUserError, "Get user error"));
37
- let n = yield wsauth_1.setWSAuthDataNewToken(userId);
38
- return res.send(response_1.JSONResponse(true, 0, "", { token: n.dataValues.token,
32
+ let userId = req.user.id;
33
+ let n = yield (0, wsauth_1.setWSAuthDataNewToken)(userId);
34
+ return res.send((0, response_1.JSONResponse)(true, 0, "", { token: n.dataValues.token,
39
35
  expiration: n.dataValues.expiration,
40
36
  userId: userId
41
37
  }));
42
38
  }
43
39
  catch (e) {
40
+ let more = null;
41
+ if (DEBUG)
42
+ more = e;
43
+ return res.status(500).send((0, response_1.JSONResponse)(false, GenerateTokenError.InternalError, "I-Error", more));
44
44
  }
45
45
  }));
package/dist/server.d.ts CHANGED
@@ -9,4 +9,6 @@ export * from "./wsauth/wsauth";
9
9
  export { randomString } from "./utils/string/random";
10
10
  export { JSONResponse } from "./utils/response";
11
11
  import ExpressServer from "./expressServer";
12
+ export * from "./middlewares/auth";
13
+ export * from "./middlewares/wsauth";
12
14
  export default ExpressServer;
package/dist/server.js CHANGED
@@ -1,26 +1,40 @@
1
1
  "use strict";
2
- function __export(m) {
3
- for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
4
- }
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
5
16
  var __importDefault = (this && this.__importDefault) || function (mod) {
6
17
  return (mod && mod.__esModule) ? mod : { "default": mod };
7
18
  };
8
19
  Object.defineProperty(exports, "__esModule", { value: true });
9
- __export(require("./auth/auth"));
20
+ exports.JSONResponse = exports.randomString = exports.WebSocketAuth = exports.dataBase = exports.User = void 0;
21
+ __exportStar(require("./auth/auth"), exports);
10
22
  ;
11
23
  var User_1 = require("./database/models/User");
12
- exports.User = User_1.User;
24
+ Object.defineProperty(exports, "User", { enumerable: true, get: function () { return User_1.User; } });
13
25
  var database_1 = require("./database/database");
14
- exports.dataBase = database_1.dataBase;
15
- __export(require("./sessions/secureset"));
16
- __export(require("./sessions/secureget"));
17
- __export(require("./users/users"));
26
+ Object.defineProperty(exports, "dataBase", { enumerable: true, get: function () { return database_1.dataBase; } });
27
+ __exportStar(require("./sessions/secureset"), exports);
28
+ __exportStar(require("./sessions/secureget"), exports);
29
+ __exportStar(require("./users/users"), exports);
18
30
  var WSAuth_1 = require("./database/models/WSAuth");
19
- exports.WebSocketAuth = WSAuth_1.WebSocketAuth;
20
- __export(require("./wsauth/wsauth"));
31
+ Object.defineProperty(exports, "WebSocketAuth", { enumerable: true, get: function () { return WSAuth_1.WebSocketAuth; } });
32
+ __exportStar(require("./wsauth/wsauth"), exports);
21
33
  var random_1 = require("./utils/string/random");
22
- exports.randomString = random_1.randomString;
34
+ Object.defineProperty(exports, "randomString", { enumerable: true, get: function () { return random_1.randomString; } });
23
35
  var response_1 = require("./utils/response");
24
- exports.JSONResponse = response_1.JSONResponse;
36
+ Object.defineProperty(exports, "JSONResponse", { enumerable: true, get: function () { return response_1.JSONResponse; } });
25
37
  const expressServer_1 = __importDefault(require("./expressServer"));
38
+ __exportStar(require("./middlewares/auth"), exports);
39
+ __exportStar(require("./middlewares/wsauth"), exports);
26
40
  exports.default = expressServer_1.default;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSessionValue = void 0;
3
4
  function getSessionValue(req, get) {
4
5
  return req.session[get];
5
6
  }
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deleteSessionValue = exports.setSessionValue = void 0;
3
4
  function setSessionValue(req, to, value) {
4
5
  req.session[to] = value;
5
6
  }
@@ -1,10 +1,10 @@
1
- export declare const dialect: string;
2
- export declare const host: string;
3
- export declare const database: string;
4
- export declare const username: string;
5
- export declare const password: string;
6
- export declare namespace define {
7
- export const underscored: boolean;
8
- export const timestamps: boolean;
1
+ export const dialect: string;
2
+ export const host: string;
3
+ export const database: string;
4
+ export const username: string;
5
+ export const password: string;
6
+ export namespace define {
7
+ const underscored: boolean;
8
+ const timestamps: boolean;
9
9
  }
10
- export declare const logging: boolean;
10
+ export const logging: boolean;
@@ -12,6 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.checkArgon2Password = exports.createArgon2Hash = void 0;
15
16
  const argon2_1 = __importDefault(require("argon2"));
16
17
  function createArgon2Hash(password_string) {
17
18
  return __awaiter(this, void 0, void 0, function* () {
@@ -9,6 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.checkUserPassword = exports.createUser = exports.isUserExist = exports.deleteUserById = exports.getUserIdByUserEmail = exports.getUserByEmail = exports.getUserById = exports.getUserSessionData = void 0;
12
13
  const database_1 = require("./../database/database");
13
14
  const User_1 = require("./../database/models/User");
14
15
  const password_1 = require("./password");
@@ -16,7 +17,7 @@ const config_1 = require("../auth/config");
16
17
  const secureget_1 = require("../sessions/secureget");
17
18
  User_1.User.init(database_1.dataBase);
18
19
  function getUserSessionData(req) {
19
- return secureget_1.getSessionValue(req, config_1.SESSION_LOGGED_DATA);
20
+ return (0, secureget_1.getSessionValue)(req, config_1.SESSION_LOGGED_DATA);
20
21
  }
21
22
  exports.getUserSessionData = getUserSessionData;
22
23
  function getUserById(id) {
@@ -77,7 +78,7 @@ function createUser(data) {
77
78
  }
78
79
  if (user_exist)
79
80
  throw "User exist";
80
- let hash = yield password_1.createArgon2Hash(data.password_string);
81
+ let hash = yield (0, password_1.createArgon2Hash)(data.password_string);
81
82
  if (!hash)
82
83
  throw "Create argon2 hash error";
83
84
  try {
@@ -99,12 +100,12 @@ function checkUserPassword(email, password_string) {
99
100
  user = yield getUserByEmail(email);
100
101
  }
101
102
  catch (e) {
102
- return false;
103
+ throw e;
103
104
  }
104
105
  if (!user)
105
106
  return false;
106
107
  let hash = user.dataValues.password_hash;
107
- if ((yield password_1.checkArgon2Password(hash, password_string)) == 'Match')
108
+ if ((yield (0, password_1.checkArgon2Password)(hash, password_string)) == 'Match')
108
109
  return true;
109
110
  return false;
110
111
  });
@@ -1 +1,2 @@
1
1
  export declare function JSONResponse(is_ok: boolean, error_code?: number, error_message?: string, data?: any): string;
2
+ export declare function WSResponse(isOK: boolean, message?: string, errorMessage?: string, data?: any): string;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WSResponse = exports.JSONResponse = void 0;
3
4
  function JSONResponse(is_ok, error_code = 0, error_message = '', data = {}) {
4
5
  const ret_data = {
5
6
  is_ok: is_ok,
@@ -10,3 +11,12 @@ function JSONResponse(is_ok, error_code = 0, error_message = '', data = {}) {
10
11
  return JSON.stringify(ret_data);
11
12
  }
12
13
  exports.JSONResponse = JSONResponse;
14
+ function WSResponse(isOK, message = '', errorMessage = "", data = {}) {
15
+ return JSON.stringify({
16
+ is_ok: isOK,
17
+ message: message,
18
+ error_message: errorMessage,
19
+ data: data
20
+ });
21
+ }
22
+ exports.WSResponse = WSResponse;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.randomString = void 0;
3
4
  function randomString(length) {
4
5
  var result = '';
5
6
  var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
@@ -9,6 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.checkConnectionAuth = exports.authenticateWS = exports.checkWSAuthToken = exports.setWSAuthDataNewToken = exports.getWSAuthDataByUserId = void 0;
12
13
  const server_1 = require("../server");
13
14
  const server_2 = require("../server");
14
15
  const random_1 = require("./../utils/string/random");
@@ -29,7 +30,7 @@ function setWSAuthDataNewToken(userId, expiration_hours = 72) {
29
30
  return __awaiter(this, void 0, void 0, function* () {
30
31
  try {
31
32
  let ws = yield getWSAuthDataByUserId(userId);
32
- let token = random_1.randomString(50);
33
+ let token = (0, random_1.randomString)(50);
33
34
  let expiration = new Date();
34
35
  expiration.setTime(expiration.getTime() + expiration_hours * 60 * 60 * 1000);
35
36
  if (!Boolean(ws)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "serverpreconfigured",
3
- "version": "1.0.7",
3
+ "version": "1.1.1",
4
4
  "description": "\"Pre-configured server with authentication system and database integration\"",
5
5
  "main": "dist/server.js",
6
6
  "keywords": ["server","pre configured","database","authentication"],
@@ -21,7 +21,7 @@
21
21
  "cors": "^2.8.5",
22
22
  "express": "^4.17.3",
23
23
  "express-session": "^1.17.2",
24
- "meta-sanitizer": "^2.1.1",
24
+ "meta-sanitizer": "^2.1.4",
25
25
  "nodemon": "^2.0.15",
26
26
  "pg": "^8.7.3",
27
27
  "pg-hstore": "^2.3.4",
@@ -0,0 +1,21 @@
1
+ import { userIsLogged } from "../server";
2
+ import { JSONResponse } from "../server";
3
+ import { getUserSessionData } from "../server";
4
+ import { getUserIdByUserEmail } from "../server";
5
+ import ENV from "../settings/env";
6
+ const DEBUG=ENV.NODE_ENV==='development'?true:false;
7
+ export async function setUserDataMiddleware(req:any,res:any,next:any){
8
+ if(!userIsLogged(req))
9
+ return res.status(401).send(JSONResponse(false,undefined,"User Must Be Logged"));
10
+ try{
11
+ const dealerEmail=getUserSessionData(req);
12
+ const dealerId=await getUserIdByUserEmail(dealerEmail);
13
+ req.user={email:dealerEmail,id:dealerId};
14
+ next();
15
+ }catch(e){
16
+ let more=null;
17
+ if(DEBUG)
18
+ more=e;
19
+ return res.status(500).send(JSONResponse(false,undefined,"Get dealer data error",more));
20
+ }
21
+ }
@@ -0,0 +1,4 @@
1
+ import meta_sanitizer from "meta-sanitizer";
2
+ export function checkAndFilterPostParams(req:any,res:any,next:any){
3
+
4
+ }
@@ -0,0 +1,36 @@
1
+ import { randomString } from "../utils/string/random";
2
+ import { checkConnectionAuth } from "../wsauth/wsauth";
3
+ import { WSResponse } from "../utils/response";
4
+ import { authenticateWS } from "../server";
5
+ import meta_sanitizer from "meta-sanitizer";
6
+ const DEBUG=true;
7
+ export async function checkWSAuth(ws:any,msg:any):Promise<boolean>{
8
+ try{
9
+ if(ws.userId && ws.connectionToken){
10
+ if((await checkConnectionAuth(ws.userId,ws.connectionToken)))
11
+ return true;
12
+ }
13
+ const message=JSON.parse(msg);
14
+ if(message.action==="Authenticate"){
15
+ const token=meta_sanitizer.justCharsAndNumbers(message.token,false);
16
+ const userId=parseInt(meta_sanitizer.justNumbers(message.userId,false));
17
+ const connectionToken=randomString(35);
18
+ if((await authenticateWS(userId,token,connectionToken))){
19
+ ws.userId=userId;
20
+ ws.connectionToken=connectionToken;
21
+ return true;
22
+ }else{
23
+ return sendError(false,"Invalid Token or UserID");
24
+ }
25
+ }else{
26
+ return sendError(false,"Need auth","'action'='Authenticate' and must have 'token' and 'userId'");
27
+ }
28
+ }catch(e){
29
+ return sendError(false,"Internal Error","",e);
30
+ }
31
+
32
+ function sendError(isOk:boolean,message:string,errorMessage:string="",data:any={}){
33
+ ws.send(WSResponse(isOk,message,errorMessage,data));
34
+ return false;
35
+ }
36
+ }
@@ -6,10 +6,13 @@ import { userIsLogged } from "../auth/auth";
6
6
  import meta_sanitizer from 'meta-sanitizer';
7
7
  import { checkUserPassword } from "../users/users";
8
8
  import { createUser } from "../users/users";
9
+ import ENV from "../settings/env";
10
+ const DEBUG=ENV.NODE_ENV==='development'?true:false;
9
11
  enum LoginErrorCode{
10
12
  NoError=0,
11
13
  InvalidParams,
12
14
  InvalidPassword,
15
+ InternalError,
13
16
 
14
17
  }
15
18
  enum RegisterUserErrorCode{
@@ -38,12 +41,20 @@ router.post('/login',async (req,res)=>{
38
41
  }
39
42
  if(password==""||email=="")
40
43
  return res.send(JSONResponse(false,LoginErrorCode.InvalidParams,"Must have 'email' and 'password' params"));
41
- const checkPass=await checkUserPassword(email,password);
42
- if(checkPass){
43
- setSessionValue(req,SESSION_LOGGED_DATA,email);
44
- return res.send(JSONResponse(true,LoginErrorCode.NoError,"Login Ok"));
45
- }
46
- return res.send(JSONResponse(false,LoginErrorCode.InvalidPassword,"Invalid Password"));
44
+ try{
45
+ const checkPass=await checkUserPassword(email,password);
46
+ if(checkPass){
47
+ setSessionValue(req,SESSION_LOGGED_DATA,email);
48
+ return res.send(JSONResponse(true,LoginErrorCode.NoError,"Login Ok"));
49
+ }
50
+ return res.send(JSONResponse(false,LoginErrorCode.InvalidPassword,"Invalid Password"));
51
+ }catch(e){
52
+ let more=null;
53
+ if(DEBUG)
54
+ more=e;
55
+ return res.send(JSONResponse(false,LoginErrorCode.InternalError,"I-Error",more));
56
+ }
57
+
47
58
  });
48
59
  router.post('/register',async (req,res)=>{
49
60
  try{
@@ -1,29 +1,27 @@
1
1
  import express from "express";
2
2
  import { JSONResponse } from "../utils/response";
3
- import { userIsLogged } from "../auth/auth";
4
3
  import { setWSAuthDataNewToken } from "../wsauth/wsauth";
5
- import { getUserIdByUserEmail } from "../users/users";
6
- import { getSessionValue } from "../server";
7
- import { SESSION_LOGGED_DATA } from "../auth/config";
4
+ import ENV from "../settings/env";
5
+ import { setUserDataMiddleware } from "../middlewares/auth";
8
6
  export const router=express.Router();
7
+ const DEBUG=ENV.NODE_ENV==='development'?true:false;
9
8
  enum GenerateTokenError{
10
9
  UserMustBeLogged=1,
11
10
  GetUserError,
12
11
  InternalError,
13
12
  };
14
- router.post('/gettoken',async (req,res)=>{
15
- if(!userIsLogged(req))
16
- return res.send(JSONResponse(false,GenerateTokenError.UserMustBeLogged,"User Must Be Logged"));
13
+ router.post('/gettoken',setUserDataMiddleware,async (req:any,res:any)=>{
17
14
  try{
18
- let userId=await getUserIdByUserEmail(getSessionValue(req,SESSION_LOGGED_DATA));
19
- if(userId==NaN)
20
- return res.send(JSONResponse(false,GenerateTokenError.GetUserError,"Get user error"));
15
+ let userId:number=req.user.id;
21
16
  let n=await setWSAuthDataNewToken(userId);
22
17
  return res.send(JSONResponse(true,0,"",{token:n.dataValues.token,
23
18
  expiration:n.dataValues.expiration,
24
19
  userId:userId
25
20
  }));
26
21
  }catch(e){
27
-
22
+ let more=null;
23
+ if(DEBUG)
24
+ more=e;
25
+ return res.status(500).send(JSONResponse(false,GenerateTokenError.InternalError,"I-Error",more));
28
26
  }
29
27
  });
package/src/server.ts CHANGED
@@ -9,4 +9,6 @@ export * from "./wsauth/wsauth";
9
9
  export { randomString } from "./utils/string/random";
10
10
  export { JSONResponse } from "./utils/response";
11
11
  import ExpressServer from "./expressServer";
12
+ export * from "./middlewares/auth";
13
+ export * from "./middlewares/wsauth";
12
14
  export default ExpressServer;
@@ -9,12 +9,12 @@ User.init(dataBase);
9
9
  export function getUserSessionData(req:any):string{
10
10
  return getSessionValue(req,SESSION_LOGGED_DATA);
11
11
  }
12
- export async function getUserById(id:Number){
12
+ export async function getUserById(id:Number):Promise<any>{
13
13
  let result=await User.findOne({where:{id:id.toString()}});
14
14
  return (result);
15
15
  }
16
16
 
17
- export async function getUserByEmail(email:string){
17
+ export async function getUserByEmail(email:string):Promise<any>{
18
18
  let result=await User.findOne({where:{email:email}});
19
19
  return (result);
20
20
  }
@@ -29,11 +29,11 @@ export async function getUserIdByUserEmail(email:string):Promise<number>{
29
29
  }
30
30
  }
31
31
 
32
- export async function deleteUserById(id:Number){
32
+ export async function deleteUserById(id:Number):Promise<any>{
33
33
  let result=await User.destroy({where:{id:id.toString()}});
34
34
  return result;
35
35
  }
36
- export async function isUserExist(email:string) {
36
+ export async function isUserExist(email:string):Promise<boolean>{
37
37
  try{
38
38
  let user=await getUserByEmail(email);
39
39
  return Boolean(user);
@@ -42,7 +42,7 @@ export async function isUserExist(email:string) {
42
42
  }
43
43
  }
44
44
 
45
- export async function createUser(data:UserCreateInterface){
45
+ export async function createUser(data:UserCreateInterface):Promise<any>{
46
46
  let user_exist=false;
47
47
  try{
48
48
  user_exist=await isUserExist(data.email);
@@ -69,7 +69,7 @@ export async function checkUserPassword(email:string,password_string:string):Pro
69
69
  try{
70
70
  user=await getUserByEmail(email);
71
71
  }catch(e){
72
- return false;
72
+ throw e;
73
73
  }
74
74
  if(!user)
75
75
  return false;
@@ -6,4 +6,12 @@ export function JSONResponse(is_ok:boolean,error_code:number=0,error_message:str
6
6
  data:data,
7
7
  };
8
8
  return JSON.stringify(ret_data);
9
- }
9
+ }
10
+ export function WSResponse(isOK:boolean,message:string='',errorMessage:string="",data:any={}):string{
11
+ return JSON.stringify({
12
+ is_ok:isOK,
13
+ message:message,
14
+ error_message:errorMessage,
15
+ data:data
16
+ });
17
+ }