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 +2 -1
- package/dist/auth/config.js +1 -0
- package/dist/database/database.d.ts +2 -1
- package/dist/database/database.js +1 -0
- package/dist/database/models/User.js +1 -0
- package/dist/database/models/WSAuth.js +1 -0
- package/dist/expressServer.js +4 -4
- package/dist/middlewares/auth.d.ts +1 -0
- package/dist/middlewares/auth.js +40 -0
- package/dist/middlewares/post.d.ts +1 -0
- package/dist/middlewares/post.js +6 -0
- package/dist/middlewares/wsauth.d.ts +1 -0
- package/dist/middlewares/wsauth.js +56 -0
- package/dist/modules/initcors.js +2 -1
- package/dist/modules/postreader.js +1 -0
- package/dist/modules/sessions.js +2 -1
- package/dist/routes/users.js +26 -15
- package/dist/routes/wsauth.js +12 -12
- package/dist/server.d.ts +2 -0
- package/dist/server.js +27 -13
- package/dist/sessions/secureget.js +1 -0
- package/dist/sessions/secureset.js +1 -0
- package/dist/settings/database/database.d.ts +9 -9
- package/dist/users/password.js +1 -0
- package/dist/users/users.js +5 -4
- package/dist/utils/response.d.ts +1 -0
- package/dist/utils/response.js +10 -0
- package/dist/utils/string/random.js +1 -0
- package/dist/wsauth/wsauth.js +2 -1
- package/package.json +2 -2
- package/src/middlewares/auth.ts +21 -0
- package/src/middlewares/post.ts +4 -0
- package/src/middlewares/wsauth.ts +36 -0
- package/src/routes/users.ts +17 -6
- package/src/routes/wsauth.ts +9 -11
- package/src/server.ts +2 -0
- package/src/users/users.ts +6 -6
- package/src/utils/response.ts +9 -1
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;
|
package/dist/auth/config.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
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");
|
package/dist/expressServer.js
CHANGED
|
@@ -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 @@
|
|
|
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;
|
package/dist/modules/initcors.js
CHANGED
|
@@ -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());
|
package/dist/modules/sessions.js
CHANGED
|
@@ -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,
|
package/dist/routes/users.js
CHANGED
|
@@ -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
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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;
|
package/dist/routes/wsauth.js
CHANGED
|
@@ -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
|
|
20
|
-
const
|
|
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 =
|
|
35
|
-
|
|
36
|
-
|
|
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
|
|
3
|
-
|
|
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
|
-
|
|
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
|
|
24
|
+
Object.defineProperty(exports, "User", { enumerable: true, get: function () { return User_1.User; } });
|
|
13
25
|
var database_1 = require("./database/database");
|
|
14
|
-
exports
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
|
20
|
-
|
|
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
|
|
34
|
+
Object.defineProperty(exports, "randomString", { enumerable: true, get: function () { return random_1.randomString; } });
|
|
23
35
|
var response_1 = require("./utils/response");
|
|
24
|
-
exports
|
|
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,10 +1,10 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
|
|
8
|
-
|
|
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
|
|
10
|
+
export const logging: boolean;
|
package/dist/users/password.js
CHANGED
|
@@ -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* () {
|
package/dist/users/users.js
CHANGED
|
@@ -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
|
-
|
|
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
|
});
|
package/dist/utils/response.d.ts
CHANGED
package/dist/utils/response.js
CHANGED
|
@@ -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;
|
package/dist/wsauth/wsauth.js
CHANGED
|
@@ -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.
|
|
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.
|
|
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,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
|
+
}
|
package/src/routes/users.ts
CHANGED
|
@@ -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
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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{
|
package/src/routes/wsauth.ts
CHANGED
|
@@ -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
|
|
6
|
-
import {
|
|
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=
|
|
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;
|
package/src/users/users.ts
CHANGED
|
@@ -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
|
-
|
|
72
|
+
throw e;
|
|
73
73
|
}
|
|
74
74
|
if(!user)
|
|
75
75
|
return false;
|
package/src/utils/response.ts
CHANGED
|
@@ -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
|
+
}
|