@grandlinex/kernel 0.22.0 → 0.23.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.
@@ -1,6 +1,6 @@
1
1
  import e from 'express';
2
2
  import { IBaseKernelModule } from '../lib';
3
- import { BaseApiAction } from '../classes';
3
+ import { BaseApiAction, JwtToken } from '../classes';
4
4
  /**
5
5
  * @name ApiAuthTestAction
6
6
  *
@@ -23,5 +23,5 @@ import { BaseApiAction } from '../classes';
23
23
  */
24
24
  export default class ApiAuthTestAction extends BaseApiAction {
25
25
  constructor(module: IBaseKernelModule<any, any, any, any>);
26
- handler(req: e.Request, res: e.Response, next: () => void): Promise<void>;
26
+ handler(req: e.Request, res: e.Response, next: () => void, data: JwtToken): Promise<void>;
27
27
  }
@@ -79,9 +79,10 @@ var ApiAuthTestAction = /** @class */ (function (_super) {
79
79
  _this.handler = _this.handler.bind(_this);
80
80
  return _this;
81
81
  }
82
- ApiAuthTestAction.prototype.handler = function (req, res, next) {
82
+ ApiAuthTestAction.prototype.handler = function (req, res, next, data) {
83
83
  return __awaiter(this, void 0, void 0, function () {
84
84
  return __generator(this, function (_a) {
85
+ this.debug(data.userid);
85
86
  res.status(200).send("It work's");
86
87
  return [2 /*return*/];
87
88
  });
@@ -98,7 +98,7 @@ var GetTokenAction = /** @class */ (function (_super) {
98
98
  }
99
99
  GetTokenAction.prototype.handler = function (req, res, next) {
100
100
  return __awaiter(this, void 0, void 0, function () {
101
- var cc, _a, username, token, jwt;
101
+ var cc, _a, username, token, valid, jwt;
102
102
  return __generator(this, function (_b) {
103
103
  switch (_b.label) {
104
104
  case 0:
@@ -114,8 +114,10 @@ var GetTokenAction = /** @class */ (function (_super) {
114
114
  _a = req.body, username = _a.username, token = _a.token;
115
115
  return [4 /*yield*/, cc.apiTokenValidation(username, token, 'api')];
116
116
  case 1:
117
- if (_b.sent()) {
117
+ valid = _b.sent();
118
+ if (valid.valid && valid.userId) {
118
119
  jwt = cc.jwtGenerateAccessToken({
120
+ userid: valid.userId,
119
121
  username: username,
120
122
  });
121
123
  res.status(200).send({ token: jwt });
@@ -1,16 +1,23 @@
1
1
  import { Request } from 'express';
2
- export interface JwtToken {
2
+ export interface JwtTokenData {
3
+ username: string;
4
+ userid: string;
5
+ }
6
+ export interface JwtToken extends JwtTokenData {
3
7
  exp: number;
4
8
  iat: number;
5
- username: string;
6
9
  }
10
+ export declare type AuthResult = {
11
+ valid: boolean;
12
+ userId: string | null;
13
+ };
7
14
  export interface IAuthProvider {
8
- authorizeToken(username: string, token: any, requestType: string): Promise<boolean>;
15
+ authorizeToken(userid: string, token: string, requestType: string): Promise<AuthResult>;
9
16
  validateAccess(token: JwtToken, requestType: string): Promise<boolean>;
10
17
  bearerTokenValidation(req: Request): Promise<JwtToken | null>;
11
18
  }
12
19
  export default abstract class BaseAuthProvider implements IAuthProvider {
13
- abstract authorizeToken(username: string, token: any, requestType: string): Promise<boolean>;
20
+ abstract authorizeToken(username: string, token: string, requestType: string): Promise<AuthResult>;
14
21
  abstract validateAccess(token: JwtToken, requestType: string): Promise<boolean>;
15
22
  abstract bearerTokenValidation(req: Request): Promise<JwtToken | null>;
16
23
  }
@@ -4,4 +4,5 @@ import BaseEndpoint from './BaseEndpoint';
4
4
  import BaseKernelModule from './BaseKernelModule';
5
5
  import BaseApiAction from './BaseApiAction';
6
6
  import BaseAuthProvider from './BaseAuthProvider';
7
+ export * from './BaseAuthProvider';
7
8
  export { BaseLoopService, BaseAuthProvider, BaseKernelModule, BaseService, BaseApiAction, BaseEndpoint, BaseElement, BaseCache, BaseAction, BaseClient, BaseBridge, };
@@ -1,4 +1,18 @@
1
1
  "use strict";
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
+ };
2
16
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
17
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
18
  };
@@ -21,3 +35,4 @@ var BaseApiAction_1 = __importDefault(require("./BaseApiAction"));
21
35
  exports.BaseApiAction = BaseApiAction_1.default;
22
36
  var BaseAuthProvider_1 = __importDefault(require("./BaseAuthProvider"));
23
37
  exports.BaseAuthProvider = BaseAuthProvider_1.default;
38
+ __exportStar(require("./BaseAuthProvider"), exports);
@@ -9,7 +9,10 @@ export interface ICClient extends ICoreCClient {
9
9
  jwtGenerateAccessToken(data: {
10
10
  username: string;
11
11
  }): string;
12
- apiTokenValidation(username: string, token: string, requestType: string): Promise<boolean>;
12
+ apiTokenValidation(username: string, token: string, requestType: string): Promise<{
13
+ valid: boolean;
14
+ userId: string | null;
15
+ }>;
13
16
  permissionValidation(token: JwtToken, requestType: string): Promise<boolean>;
14
17
  bearerTokenValidation(req: Request): Promise<JwtToken | null>;
15
18
  }
@@ -1,17 +1,19 @@
1
1
  import { Request } from 'express';
2
2
  import { CoreCryptoClient } from '@grandlinex/core';
3
3
  import { ICClient, IKernel } from '../../lib';
4
- import { IAuthProvider, JwtToken } from '../../classes/BaseAuthProvider';
4
+ import { IAuthProvider, JwtToken, JwtTokenData } from '../../classes/BaseAuthProvider';
5
5
  export default class CryptoClient extends CoreCryptoClient implements ICClient {
6
6
  protected authProvider: IAuthProvider | null;
7
7
  protected kernel: IKernel;
8
+ protected expiresIn: string;
8
9
  constructor(key: string, kernel: IKernel);
9
10
  setAuthProvider(provider: IAuthProvider): boolean;
10
11
  jwtVerifyAccessToken(token: string): Promise<JwtToken | null>;
11
- jwtGenerateAccessToken(data: {
12
- username: string;
13
- }): string;
14
- apiTokenValidation(username: string, token: string, requestType: string): Promise<boolean>;
12
+ jwtGenerateAccessToken(data: JwtTokenData): string;
13
+ apiTokenValidation(username: string, token: string, requestType: string): Promise<{
14
+ valid: boolean;
15
+ userId: string | null;
16
+ }>;
15
17
  permissionValidation(token: JwtToken, requestType: string): Promise<boolean>;
16
18
  bearerTokenValidation(req: Request): Promise<JwtToken | null>;
17
19
  }
@@ -62,6 +62,7 @@ var CryptoClient = /** @class */ (function (_super) {
62
62
  var _this = _super.call(this, kernel, key) || this;
63
63
  _this.kernel = kernel;
64
64
  _this.authProvider = null;
65
+ _this.expiresIn = kernel.getConfigStore().get('JWT_EXPIRE') || '1 days';
65
66
  return _this;
66
67
  }
67
68
  CryptoClient.prototype.setAuthProvider = function (provider) {
@@ -85,7 +86,7 @@ var CryptoClient = /** @class */ (function (_super) {
85
86
  });
86
87
  };
87
88
  CryptoClient.prototype.jwtGenerateAccessToken = function (data) {
88
- return jsonwebtoken_1.default.sign(data, this.AesKey, { expiresIn: '1 days' });
89
+ return jsonwebtoken_1.default.sign(data, this.AesKey, { expiresIn: this.expiresIn });
89
90
  };
90
91
  CryptoClient.prototype.apiTokenValidation = function (username, token, requestType) {
91
92
  return __awaiter(this, void 0, void 0, function () {
@@ -96,9 +97,18 @@ var CryptoClient = /** @class */ (function (_super) {
96
97
  }
97
98
  store = this.kernel.getConfigStore();
98
99
  if (!store.has('SERVER_PASSWORD')) {
99
- return [2 /*return*/, false];
100
+ return [2 /*return*/, { valid: false, userId: null }];
100
101
  }
101
- return [2 /*return*/, token === store.get('SERVER_PASSWORD') && username === 'admin'];
102
+ if (token === store.get('SERVER_PASSWORD') && username === 'admin') {
103
+ return [2 /*return*/, {
104
+ valid: true,
105
+ userId: 'admin',
106
+ }];
107
+ }
108
+ return [2 /*return*/, {
109
+ valid: false,
110
+ userId: null,
111
+ }];
102
112
  });
103
113
  });
104
114
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grandlinex/kernel",
3
- "version": "0.22.0",
3
+ "version": "0.23.1",
4
4
  "description": "GrandLineX is an out-of-the-box server framework on top of ExpressJs.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -27,7 +27,7 @@
27
27
  },
28
28
  "license": "BSD-3-Clause",
29
29
  "dependencies": {
30
- "@grandlinex/core": "^0.22.0",
30
+ "@grandlinex/core": "^0.23.2",
31
31
  "axios": "^0.24.0",
32
32
  "body-parser": "^1.19.1",
33
33
  "express": "^4.17.2",