serverpreconfigured 2.1.8 → 2.1.9

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.
@@ -1,8 +1,10 @@
1
1
  import { Model } from "sequelize";
2
2
  export declare class User extends Model {
3
+ id: number;
3
4
  email: string;
4
5
  first_name?: string;
5
6
  is_active: boolean;
6
7
  password_hash: string;
8
+ last_action: Date;
7
9
  static init(sequelize: any): void;
8
10
  }
@@ -10,6 +10,7 @@ class User extends sequelize_1.Model {
10
10
  email: sequelize_2.DataTypes.STRING,
11
11
  is_active: sequelize_2.DataTypes.BOOLEAN,
12
12
  password_hash: sequelize_2.DataTypes.STRING,
13
+ last_action: sequelize_2.DataTypes.DATE,
13
14
  }, {
14
15
  sequelize: sequelize,
15
16
  tableName: 'spc_users',
@@ -16,7 +16,6 @@ exports.setUserDataMiddleware = void 0;
16
16
  const server_1 = require("../server");
17
17
  const server_2 = require("../server");
18
18
  const server_3 = require("../server");
19
- const server_4 = require("../server");
20
19
  const env_1 = __importDefault(require("../settings/env"));
21
20
  const DEBUG = env_1.default.NODE_ENV === 'development' ? true : false;
22
21
  function setUserDataMiddleware(req, res, next) {
@@ -25,8 +24,11 @@ function setUserDataMiddleware(req, res, next) {
25
24
  return res.status(401).send((0, server_2.JSONResponse)(false, undefined, "User Must Be Logged"));
26
25
  try {
27
26
  const dealerEmail = (0, server_3.getUserSessionData)(req);
28
- const dealerId = yield (0, server_4.getUserIdByUserEmail)(dealerEmail);
29
- req.user = { email: dealerEmail, id: dealerId };
27
+ const user = yield server_1.User.findOne({ where: { email: dealerEmail, is_active: true } });
28
+ if (!user)
29
+ throw "Unknown user";
30
+ req.user = { email: dealerEmail, id: user.id };
31
+ yield (0, server_1.updateUserLastAction)(user);
30
32
  next();
31
33
  }
32
34
  catch (e) {
@@ -71,6 +71,7 @@ router.post('/login', (req, res) => __awaiter(void 0, void 0, void 0, function*
71
71
  return res.status(400).send((0, response_1.JSONResponse)(false, 0, "User deleted"));
72
72
  }
73
73
  (0, auth_3.setUserLogged)(req, email);
74
+ yield (0, users_1.updateUserLastAction)(user);
74
75
  return res.status(200).send((0, response_1.JSONResponse)(true, LoginErrorCode.NoError, "Login Ok"));
75
76
  }
76
77
  return res.status(403).send((0, response_1.JSONResponse)(false, LoginErrorCode.InvalidPassword, "Invalid Password"));
@@ -1,5 +1,6 @@
1
1
  import { User } from "./../database/models/User";
2
2
  import { UserCreateInterface } from "./types";
3
+ export declare function updateUserLastAction(user: User): Promise<User>;
3
4
  export declare function getUserSessionData(req: any): string;
4
5
  export declare function getUserById(id: Number): Promise<any>;
5
6
  export declare function getUserByEmail(email: string): Promise<any>;
@@ -9,13 +9,26 @@ 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.changeUserPassword = exports.createUser = exports.isUserExist = exports.deleteUserById = exports.getUserIdByUserEmail = exports.getUserByEmail = exports.getUserById = exports.getUserSessionData = void 0;
12
+ exports.checkUserPassword = exports.changeUserPassword = exports.createUser = exports.isUserExist = exports.deleteUserById = exports.getUserIdByUserEmail = exports.getUserByEmail = exports.getUserById = exports.getUserSessionData = exports.updateUserLastAction = void 0;
13
13
  const database_1 = require("./../database/database");
14
14
  const User_1 = require("./../database/models/User");
15
15
  const password_1 = require("./password");
16
16
  const config_1 = require("../auth/config");
17
17
  const secureget_1 = require("../sessions/secureget");
18
18
  User_1.User.init(database_1.dataBase);
19
+ function updateUserLastAction(user) {
20
+ return __awaiter(this, void 0, void 0, function* () {
21
+ try {
22
+ user.last_action = new Date();
23
+ yield user.save();
24
+ return user;
25
+ }
26
+ catch (e) {
27
+ throw e;
28
+ }
29
+ });
30
+ }
31
+ exports.updateUserLastAction = updateUserLastAction;
19
32
  function getUserSessionData(req) {
20
33
  return (0, secureget_1.getSessionValue)(req, config_1.SESSION_LOGGED_DATA);
21
34
  }
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ module.exports = {
4
+ async up (queryInterface, Sequelize) {
5
+ return await queryInterface.addColumn('spc_users','last_action',{
6
+ type:Sequelize.DATE,
7
+ allowNull:false,
8
+ defaultValue:'2016-01-01T00:00:00-00:00'
9
+ }
10
+ );
11
+ },
12
+
13
+ async down (queryInterface, Sequelize) {
14
+ return await queryInterface.removeColumn('spc_users','last_action');
15
+ }
16
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "serverpreconfigured",
3
- "version": "2.1.8",
3
+ "version": "2.1.9",
4
4
  "description": "\"Pre-configured server with authentication system and database integration\"",
5
5
  "main": "dist/server.js",
6
6
  "keywords": [
@@ -2,16 +2,19 @@ import { Model } from "sequelize";
2
2
  import { DataTypes } from "sequelize";
3
3
 
4
4
  export class User extends Model{
5
+ declare id:number;
5
6
  declare email:string;
6
7
  declare first_name?:string;
7
8
  declare is_active:boolean;
8
9
  declare password_hash:string;
10
+ declare last_action:Date;
9
11
  static init(sequelize:any){
10
12
  super.init({
11
13
  first_name:DataTypes.STRING,
12
14
  email:DataTypes.STRING,
13
15
  is_active:DataTypes.BOOLEAN,
14
16
  password_hash:DataTypes.STRING,
17
+ last_action:DataTypes.DATE,
15
18
  },
16
19
  {
17
20
  sequelize:sequelize,
@@ -1,7 +1,7 @@
1
- import { userIsLogged } from "../server";
1
+ import { User, updateUserLastAction, userIsLogged } from "../server";
2
2
  import { JSONResponse } from "../server";
3
3
  import { getUserSessionData } from "../server";
4
- import { getUserIdByUserEmail } from "../server";
4
+
5
5
  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){
@@ -9,8 +9,11 @@ export async function setUserDataMiddleware(req:any,res:any,next:any){
9
9
  return res.status(401).send(JSONResponse(false,undefined,"User Must Be Logged"));
10
10
  try{
11
11
  const dealerEmail=getUserSessionData(req);
12
- const dealerId=await getUserIdByUserEmail(dealerEmail);
13
- req.user={email:dealerEmail,id:dealerId};
12
+ const user=await User.findOne({where:{email:dealerEmail,is_active:true}});
13
+ if(!user)
14
+ throw "Unknown user";
15
+ req.user={email:dealerEmail,id:user.id};
16
+ await updateUserLastAction(user);
14
17
  next();
15
18
  }catch(e){
16
19
  let more=null;
@@ -1,10 +1,8 @@
1
1
  import express from "express";
2
- import { deleteSessionValue ,setSessionValue} from "../sessions/secureset";
3
- import { SESSION_LOGGED_DATA } from "../auth/config";
4
2
  import { JSONResponse } from "../utils/response";
5
3
  import { userIsLogged } from "../auth/auth";
6
4
  import meta_sanitizer from 'meta-sanitizer';
7
- import { checkUserPassword } from "../users/users";
5
+ import { checkUserPassword, updateUserLastAction } from "../users/users";
8
6
  import { createUser } from "../users/users";
9
7
  import { setUserDataMiddleware } from "../middlewares/auth";
10
8
  import ENV from "../settings/env";
@@ -58,6 +56,7 @@ router.post('/login',async (req,res)=>{
58
56
  return res.status(400).send(JSONResponse(false,0,"User deleted"));
59
57
  }
60
58
  setUserLogged(req,email);
59
+ await updateUserLastAction(user)
61
60
  return res.status(200).send(JSONResponse(true,LoginErrorCode.NoError,"Login Ok"));
62
61
  }
63
62
  return res.status(403).send(JSONResponse(false,LoginErrorCode.InvalidPassword,"Invalid Password"));
@@ -89,4 +88,4 @@ router.post('/register',async (req,res)=>{
89
88
  router.post('/getuser',setUserDataMiddleware,async (req:any,res)=>{
90
89
  res.send(JSONResponse(true,0,"",{email:req.user.email,id:req.user.id}));
91
90
  });
92
- export default router;
91
+ export default router;
@@ -6,6 +6,16 @@ import {SESSION_LOGGED_DATA} from "../auth/config";
6
6
  import {getSessionValue} from "../sessions/secureget";
7
7
  User.init(dataBase);
8
8
 
9
+ export async function updateUserLastAction(user:User){
10
+ try{
11
+ user.last_action=new Date();
12
+ await user.save();
13
+ return user;
14
+ }catch(e){
15
+ throw e;
16
+ }
17
+ }
18
+
9
19
  export function getUserSessionData(req:any):string{
10
20
  return getSessionValue(req,SESSION_LOGGED_DATA);
11
21
  }