@steedos/service-identity-jwt 2.3.2-beta.12 → 2.3.2-beta.14

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.
@@ -3,9 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  const account_1 = require("./account");
5
5
  const passport = require('passport');
6
- const router = require('@steedos/router').staticRouter();
6
+ const express = require('express');
7
+ const router = express.Router();
7
8
  router.use('/accounts/jwt/login', passport.authenticate('jwt', { session: false }), (req, res) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
8
9
  account_1.Account.ssoLogin(req, res, { err: null, user: req.user, redirect: false, accessToken: null }).then((loginResult) => {
10
+ if (req.query.redirect) {
11
+ return res.redirect(req.query.redirect);
12
+ }
9
13
  delete loginResult.user.services;
10
14
  delete loginResult.user.thirdPartyUser;
11
15
  return res.status(200).send(loginResult);
@@ -1,3 +1,4 @@
1
+ declare const express: any;
1
2
  declare const router: any;
2
3
  declare const core: any;
3
4
  declare const objectql: any;
@@ -7,7 +7,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- const router = require('@steedos/router').staticRouter();
10
+ const express = require('express');
11
+ const router = express.Router();
11
12
  const core = require('@steedos/core');
12
13
  const objectql = require('@steedos/objectql');
13
14
  const jwt = require('jsonwebtoken');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steedos/service-identity-jwt",
3
- "version": "2.3.2-beta.12",
3
+ "version": "2.3.2-beta.14",
4
4
  "main": "package.service.js",
5
5
  "keywords": [
6
6
  "steedos"
@@ -11,7 +11,7 @@
11
11
  "description": "steedos package",
12
12
  "repository": {},
13
13
  "dependencies": {
14
- "@steedos/accounts": "2.3.2-beta.12",
14
+ "@steedos/accounts": "2.3.2-beta.14",
15
15
  "express": "4.18.1",
16
16
  "jsonwebtoken": "8.5.1",
17
17
  "passport": "^0.6.0",
@@ -22,5 +22,5 @@
22
22
  "publishConfig": {
23
23
  "access": "public"
24
24
  },
25
- "gitHead": "f738241842b61c66eae2b1fe7bf5c0bfb66348d6"
25
+ "gitHead": "bd6b097a9d70dc7e9dace4c1af400ba5e5f0748e"
26
26
  }
@@ -2,7 +2,7 @@
2
2
  * @Author: baozhoutao@steedos.com
3
3
  * @Date: 2022-06-11 18:09:20
4
4
  * @LastEditors: sunhaolin@hotoa.com
5
- * @LastEditTime: 2022-11-24 13:06:15
5
+ * @LastEditTime: 2022-11-29 16:09:26
6
6
  * @Description:
7
7
  */
8
8
  "use strict";
@@ -86,32 +86,38 @@ module.exports = {
86
86
  const jwtOptions = {
87
87
  // secretOrKey: this.settings.jwt.secret,
88
88
  secretOrKeyProvider: function (request, rawJwtToken, done) {
89
- let decoded = jwt.decode(rawJwtToken, { complete: true });
90
- let payload = decoded.payload
91
- const app_code = payload.app_code
92
- if (app_code) { // 走应用认证
93
- objectql.getObject('apps').find({filters: [['code', '=', app_code]], fields: ['secret']}).then((records)=>{
94
- if(records.length > 0){
95
- const app = records[0];
96
- if (app.secret) {
97
- return done(null, app.secret)
98
- }
99
- else {
100
- done(`app ${app_code}'s secret is null`, null)
89
+ try {
90
+ let decoded = jwt.decode(rawJwtToken, { complete: true });
91
+ let payload = decoded.payload
92
+ const app_code = payload.app_code
93
+ if (app_code) { // 走应用认证
94
+ objectql.getObject('apps').find({filters: [['code', '=', app_code]], fields: ['secret']}).then((records)=>{
95
+ if(records.length > 0){
96
+ const app = records[0];
97
+ if (app.secret) {
98
+ return done(null, app.secret)
99
+ }
100
+ else {
101
+ done(`app ${app_code}'s secret is null`, null)
102
+ }
103
+ }else{
104
+ return done('app not find', null)
101
105
  }
102
- }else{
103
- return done('app not find', null)
104
- }
105
- })
106
- }
107
- else if (secret) { // 走全局配置
108
- return done(null, secret)
109
- }
110
- else { // 都没有则认证不通过
111
- return done('need secret', null)
106
+ })
107
+ }
108
+ else if (secret) { // 走全局配置
109
+ return done(null, secret)
110
+ }
111
+ else { // 都没有则认证不通过
112
+ return done('need secret', null)
113
+ }
114
+ } catch (error) {
115
+ // console.error(error)
116
+ return done(error.message, null)
112
117
  }
118
+
113
119
  },
114
- jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken()
120
+ jwtFromRequest: ExtractJwt.fromExtractors([ExtractJwt.fromAuthHeaderAsBearerToken(), ExtractJwt.fromUrlQueryParameter('t')])
115
121
  }
116
122
 
117
123
  const jwtAuthenticate = function (jwt_payload, done) {
@@ -1,17 +1,20 @@
1
1
  /*
2
2
  * @Author: baozhoutao@steedos.com
3
3
  * @Date: 2022-06-08 23:28:39
4
- * @LastEditors: baozhoutao@steedos.com
5
- * @LastEditTime: 2022-11-16 14:19:32
4
+ * @LastEditors: sunhaolin@hotoa.com
5
+ * @LastEditTime: 2022-11-29 15:53:46
6
6
  * @Description:
7
7
  */
8
8
  import { Account } from './account'
9
9
  const passport = require('passport');
10
-
11
- const router =require('@steedos/router').staticRouter()
10
+ const express = require('express');
11
+ const router =express.Router();
12
12
 
13
13
  router.use('/accounts/jwt/login', passport.authenticate('jwt', { session: false }), async (req: any, res) => {
14
14
  Account.ssoLogin(req, res, { err: null, user: req.user, redirect: false, accessToken: null }).then((loginResult) => {
15
+ if (req.query.redirect) { // 如果url传递了重定向的参数则优先重定向
16
+ return res.redirect(req.query.redirect)
17
+ }
15
18
  delete loginResult.user.services;
16
19
  delete loginResult.user.thirdPartyUser;
17
20
  return res.status(200).send(loginResult)
@@ -1,11 +1,12 @@
1
1
  /*
2
2
  * @Author: sunhaolin@hotoa.com
3
3
  * @Date: 2022-11-23 15:54:33
4
- * @LastEditors: sunhaolin@hotoa.com
5
- * @LastEditTime: 2022-11-23 16:45:17
4
+ * @LastEditors: baozhoutao@steedos.com
5
+ * @LastEditTime: 2022-11-28 17:59:06
6
6
  * @Description: 新增jwt 接口(GET), 所有第三方应用都通过此接口转发出去, 自动带上 jwt 加密(app.secret)后的数据,比如username、email等.
7
7
  */
8
- const router = require('@steedos/router').staticRouter()
8
+ const express = require('express');
9
+ const router =express.Router();
9
10
  const core = require('@steedos/core');
10
11
  const objectql = require('@steedos/objectql')
11
12
  const jwt = require('jsonwebtoken')