serverpreconfigured 1.0.8 → 1.1.2

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.
@@ -22,7 +22,7 @@ const DEBUG = env_1.default.NODE_ENV === 'development' ? true : false;
22
22
  function setUserDataMiddleware(req, res, next) {
23
23
  return __awaiter(this, void 0, void 0, function* () {
24
24
  if (!(0, server_1.userIsLogged)(req))
25
- return res.send((0, server_2.JSONResponse)(false, undefined, "User Must Be Logged"));
25
+ return res.status(401).send((0, server_2.JSONResponse)(false, undefined, "User Must Be Logged"));
26
26
  try {
27
27
  const dealerEmail = (0, server_3.getUserSessionData)(req);
28
28
  const dealerId = yield (0, server_4.getUserIdByUserEmail)(dealerEmail);
@@ -33,7 +33,7 @@ function setUserDataMiddleware(req, res, next) {
33
33
  let more = null;
34
34
  if (DEBUG)
35
35
  more = e;
36
- return res.send((0, server_2.JSONResponse)(false, undefined, "Get dealer data error", more));
36
+ return res.status(500).send((0, server_2.JSONResponse)(false, undefined, "Get dealer data error", more));
37
37
  }
38
38
  });
39
39
  }
@@ -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>;
@@ -1 +1,56 @@
1
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;
@@ -20,6 +20,7 @@ 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 auth_2 = require("../middlewares/auth");
23
24
  const env_1 = __importDefault(require("../settings/env"));
24
25
  const DEBUG = env_1.default.NODE_ENV === 'development' ? true : false;
25
26
  var LoginErrorCode;
@@ -88,4 +89,7 @@ router.post('/register', (req, res) => __awaiter(void 0, void 0, void 0, functio
88
89
  return res.send((0, response_1.JSONResponse)(false, RegisterUserErrorCode.InternalError, "I-Error"));
89
90
  }
90
91
  }));
92
+ router.post('/getuser', auth_2.setUserDataMiddleware, (req, res) => __awaiter(void 0, void 0, void 0, function* () {
93
+ res.send((0, response_1.JSONResponse)(true, 0, "", { email: req.user.email, id: req.user.id }));
94
+ }));
91
95
  exports.default = router;
@@ -40,6 +40,6 @@ exports.router.post('/gettoken', auth_1.setUserDataMiddleware, (req, res) => __a
40
40
  let more = null;
41
41
  if (DEBUG)
42
42
  more = e;
43
- return res.send((0, response_1.JSONResponse)(false, GenerateTokenError.InternalError, "I-Error", more));
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
@@ -10,4 +10,5 @@ export { randomString } from "./utils/string/random";
10
10
  export { JSONResponse } from "./utils/response";
11
11
  import ExpressServer from "./expressServer";
12
12
  export * from "./middlewares/auth";
13
+ export * from "./middlewares/wsauth";
13
14
  export default ExpressServer;
package/dist/server.js CHANGED
@@ -36,4 +36,5 @@ var response_1 = require("./utils/response");
36
36
  Object.defineProperty(exports, "JSONResponse", { enumerable: true, get: function () { return response_1.JSONResponse; } });
37
37
  const expressServer_1 = __importDefault(require("./expressServer"));
38
38
  __exportStar(require("./middlewares/auth"), exports);
39
+ __exportStar(require("./middlewares/wsauth"), exports);
39
40
  exports.default = expressServer_1.default;
@@ -1,9 +1,9 @@
1
1
  import { UserCreateInterface } from "./types";
2
2
  export declare function getUserSessionData(req: any): string;
3
- export declare function getUserById(id: Number): Promise<Bluebird<T>>;
4
- export declare function getUserByEmail(email: string): Promise<Bluebird<T>>;
3
+ export declare function getUserById(id: Number): Promise<any>;
4
+ export declare function getUserByEmail(email: string): Promise<any>;
5
5
  export declare function getUserIdByUserEmail(email: string): Promise<number>;
6
- export declare function deleteUserById(id: Number): Promise<Bluebird<T>>;
6
+ export declare function deleteUserById(id: Number): Promise<any>;
7
7
  export declare function isUserExist(email: string): Promise<boolean>;
8
- export declare function createUser(data: UserCreateInterface): Promise<Bluebird<T>>;
8
+ export declare function createUser(data: UserCreateInterface): Promise<any>;
9
9
  export declare function checkUserPassword(email: string, password_string: string): Promise<boolean>;
@@ -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,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.JSONResponse = void 0;
3
+ exports.WSResponse = exports.JSONResponse = void 0;
4
4
  function JSONResponse(is_ok, error_code = 0, error_message = '', data = {}) {
5
5
  const ret_data = {
6
6
  is_ok: is_ok,
@@ -11,3 +11,12 @@ function JSONResponse(is_ok, error_code = 0, error_message = '', data = {}) {
11
11
  return JSON.stringify(ret_data);
12
12
  }
13
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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "serverpreconfigured",
3
- "version": "1.0.8",
3
+ "version": "1.1.2",
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",
@@ -6,7 +6,7 @@ import ENV from "../settings/env";
6
6
  const DEBUG=ENV.NODE_ENV==='development'?true:false;
7
7
  export async function setUserDataMiddleware(req:any,res:any,next:any){
8
8
  if(!userIsLogged(req))
9
- return res.send(JSONResponse(false,undefined,"User Must Be Logged"));
9
+ return res.status(401).send(JSONResponse(false,undefined,"User Must Be Logged"));
10
10
  try{
11
11
  const dealerEmail=getUserSessionData(req);
12
12
  const dealerId=await getUserIdByUserEmail(dealerEmail);
@@ -16,6 +16,6 @@ export async function setUserDataMiddleware(req:any,res:any,next:any){
16
16
  let more=null;
17
17
  if(DEBUG)
18
18
  more=e;
19
- return res.send(JSONResponse(false,undefined,"Get dealer data error",more));
19
+ return res.status(500).send(JSONResponse(false,undefined,"Get dealer data error",more));
20
20
  }
21
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,7 +6,9 @@ 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 { setUserDataMiddleware } from "../middlewares/auth";
9
10
  import ENV from "../settings/env";
11
+
10
12
  const DEBUG=ENV.NODE_ENV==='development'?true:false;
11
13
  enum LoginErrorCode{
12
14
  NoError=0,
@@ -72,4 +74,7 @@ router.post('/register',async (req,res)=>{
72
74
  }
73
75
  });
74
76
 
77
+ router.post('/getuser',setUserDataMiddleware,async (req:any,res)=>{
78
+ res.send(JSONResponse(true,0,"",{email:req.user.email,id:req.user.id}));
79
+ });
75
80
  export default router;
@@ -22,6 +22,6 @@ router.post('/gettoken',setUserDataMiddleware,async (req:any,res:any)=>{
22
22
  let more=null;
23
23
  if(DEBUG)
24
24
  more=e;
25
- return res.send(JSONResponse(false,GenerateTokenError.InternalError,"I-Error",more));
25
+ return res.status(500).send(JSONResponse(false,GenerateTokenError.InternalError,"I-Error",more));
26
26
  }
27
27
  });
package/src/server.ts CHANGED
@@ -10,4 +10,5 @@ export { randomString } from "./utils/string/random";
10
10
  export { JSONResponse } from "./utils/response";
11
11
  import ExpressServer from "./expressServer";
12
12
  export * from "./middlewares/auth";
13
+ export * from "./middlewares/wsauth";
13
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);
@@ -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
+ }