@steedos/auth 2.2.52 → 2.2.53-beta.4
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/lib/apikey.js +95 -27
- package/lib/apikey.js.map +1 -1
- package/lib/auth-middleware.js +53 -10
- package/lib/auth-middleware.js.map +1 -1
- package/lib/endpoints/jwt.js +122 -61
- package/lib/endpoints/jwt.js.map +1 -1
- package/lib/endpoints/login.js +80 -32
- package/lib/endpoints/login.js.map +1 -1
- package/lib/endpoints/logout.js +44 -6
- package/lib/endpoints/logout.js.map +1 -1
- package/lib/endpoints/validate.js +78 -29
- package/lib/endpoints/validate.js.map +1 -1
- package/lib/express-middleware.js +6 -6
- package/lib/express-middleware.js.map +1 -1
- package/lib/index.js +10 -10
- package/lib/index.js.map +1 -1
- package/lib/session.js +198 -97
- package/lib/session.js.map +1 -1
- package/lib/spaceUserSession.js +330 -106
- package/lib/spaceUserSession.js.map +1 -1
- package/lib/tokenMap.js +84 -27
- package/lib/tokenMap.js.map +1 -1
- package/lib/userSession.js +111 -41
- package/lib/userSession.js.map +1 -1
- package/lib/utils/index.js +92 -35
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/random.js +4 -4
- package/lib/utils/random.js.map +1 -1
- package/package.json +5 -3
package/lib/spaceUserSession.js
CHANGED
|
@@ -1,67 +1,151 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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 __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (_) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
15
36
|
}
|
|
37
|
+
};
|
|
38
|
+
exports.__esModule = true;
|
|
39
|
+
exports.deleteSpaceCacheByChangedProp = exports.deleteSpaceUserSessionCacheByChangedProp = exports.updateSpaceUserSessionRolesCache = exports.getSpaceUserSession = exports.removeSpaceUserSessionFromCache = exports.addSpaceSessionToCache = exports.getSpaceSessionFromCache = void 0;
|
|
40
|
+
var objectql_1 = require("@steedos/objectql");
|
|
41
|
+
var utils_1 = require("./utils");
|
|
42
|
+
var cachers_1 = require("@steedos/cachers");
|
|
43
|
+
var session_1 = require("./session");
|
|
44
|
+
var userSession_1 = require("./userSession");
|
|
45
|
+
var _ = require("underscore");
|
|
46
|
+
var sessionCacheInMinutes = 10;
|
|
47
|
+
var SPACEUSERCACHENAME = 'space_users_cache';
|
|
48
|
+
var internalProfiles = ['admin', 'user', 'supplier', 'customer'];
|
|
49
|
+
// 使用@steedos/cacher缓存工作区信息
|
|
50
|
+
var SPACES_CACHER_NAME = 'lru.spaces';
|
|
51
|
+
function getSpaceUserProfile(userId, spaceId) {
|
|
52
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
53
|
+
var filters, spaceUser;
|
|
54
|
+
return __generator(this, function (_a) {
|
|
55
|
+
switch (_a.label) {
|
|
56
|
+
case 0:
|
|
57
|
+
filters = "(space eq '".concat(spaceId, "') and (user eq '").concat(userId, "')");
|
|
58
|
+
return [4 /*yield*/, (0, objectql_1.getSteedosSchema)().getObject('space_users').find({ filters: filters, fields: ['profile'] })];
|
|
59
|
+
case 1:
|
|
60
|
+
spaceUser = _a.sent();
|
|
61
|
+
if (spaceUser && spaceUser.length > 0) {
|
|
62
|
+
return [2 /*return*/, spaceUser[0].profile];
|
|
63
|
+
}
|
|
64
|
+
return [2 /*return*/];
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
});
|
|
16
68
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
69
|
+
function getUserRoles(userId, spaceId) {
|
|
70
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
71
|
+
var roles, space, profile, filters, permission_sets;
|
|
72
|
+
return __generator(this, function (_a) {
|
|
73
|
+
switch (_a.label) {
|
|
74
|
+
case 0:
|
|
75
|
+
roles = ['user'];
|
|
76
|
+
return [4 /*yield*/, (0, objectql_1.getSteedosSchema)().getObject('spaces').findOne(spaceId, { fields: ['admins'] })];
|
|
77
|
+
case 1:
|
|
78
|
+
space = _a.sent();
|
|
79
|
+
if (space && space.admins.includes(userId)) {
|
|
80
|
+
roles = ['admin'];
|
|
81
|
+
}
|
|
82
|
+
return [4 /*yield*/, getSpaceUserProfile(userId, spaceId)];
|
|
83
|
+
case 2:
|
|
84
|
+
profile = _a.sent();
|
|
85
|
+
if (profile) {
|
|
86
|
+
roles = [profile];
|
|
87
|
+
}
|
|
88
|
+
filters = "(space eq '".concat(spaceId, "') and (users eq '").concat(userId, "')");
|
|
89
|
+
return [4 /*yield*/, (0, objectql_1.getSteedosSchema)().getObject('permission_set').directFind({ filters: filters, fields: ['name'] })];
|
|
90
|
+
case 3:
|
|
91
|
+
permission_sets = _a.sent();
|
|
92
|
+
permission_sets.forEach(function (p) {
|
|
93
|
+
if (!_.include(internalProfiles, p.name)) {
|
|
94
|
+
roles.push(p.name);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
return [2 /*return*/, roles];
|
|
98
|
+
}
|
|
99
|
+
});
|
|
33
100
|
});
|
|
34
|
-
return roles;
|
|
35
101
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
102
|
+
function getObjectDataByIds(objectName, ids, fields) {
|
|
103
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
104
|
+
var filters, query;
|
|
105
|
+
return __generator(this, function (_a) {
|
|
106
|
+
switch (_a.label) {
|
|
107
|
+
case 0:
|
|
108
|
+
if (!ids || ids.length === 0) {
|
|
109
|
+
return [2 /*return*/, []];
|
|
110
|
+
}
|
|
111
|
+
filters = _.map(ids, function (id) {
|
|
112
|
+
if (!id) {
|
|
113
|
+
return '';
|
|
114
|
+
}
|
|
115
|
+
return "(_id eq '".concat(id, "')");
|
|
116
|
+
}).join(' or ');
|
|
117
|
+
if (!filters) {
|
|
118
|
+
return [2 /*return*/, []];
|
|
119
|
+
}
|
|
120
|
+
query = { filters: filters };
|
|
121
|
+
if (fields && fields.length > 0) {
|
|
122
|
+
query['fields'] = fields;
|
|
123
|
+
}
|
|
124
|
+
return [4 /*yield*/, (0, objectql_1.getSteedosSchema)().getObject(objectName).directFind(query)];
|
|
125
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
});
|
|
54
129
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
130
|
+
function getUserPermissionShares(spaceUser) {
|
|
131
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
132
|
+
var userFilters, filters;
|
|
133
|
+
return __generator(this, function (_a) {
|
|
134
|
+
switch (_a.label) {
|
|
135
|
+
case 0:
|
|
136
|
+
userFilters = ["(users eq '".concat(spaceUser.user, "')")];
|
|
137
|
+
_.each(spaceUser.organizations_parents, function (orgId) {
|
|
138
|
+
userFilters.push("(organizations eq '".concat(orgId, "')"));
|
|
139
|
+
});
|
|
140
|
+
filters = "((".concat(userFilters.join(' or '), ") and space eq '").concat(spaceUser.space, "')");
|
|
141
|
+
return [4 /*yield*/, (0, objectql_1.getSteedosSchema)().getObject('permission_shares').find({ filters: filters, fields: ['_id', 'object_name'] })];
|
|
142
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
143
|
+
}
|
|
144
|
+
});
|
|
59
145
|
});
|
|
60
|
-
let filters = `((${userFilters.join(' or ')}) and space eq '${spaceUser.space}')`;
|
|
61
|
-
return await (0, objectql_1.getSteedosSchema)().getObject('permission_shares').find({ filters: filters, fields: ['_id', 'object_name'] });
|
|
62
146
|
}
|
|
63
147
|
function getSpaceSessionFromCache(spaceId, userId) {
|
|
64
|
-
|
|
148
|
+
var spaceUserSession = (0, objectql_1.getConfig)(SPACEUSERCACHENAME, "".concat(spaceId, "-").concat(userId));
|
|
65
149
|
if (!spaceUserSession) {
|
|
66
150
|
return null;
|
|
67
151
|
}
|
|
@@ -73,65 +157,205 @@ function getSpaceSessionFromCache(spaceId, userId) {
|
|
|
73
157
|
}
|
|
74
158
|
exports.getSpaceSessionFromCache = getSpaceSessionFromCache;
|
|
75
159
|
function addSpaceSessionToCache(spaceId, userId, spaceUserSession) {
|
|
76
|
-
spaceUserSession._id =
|
|
160
|
+
spaceUserSession._id = "".concat(spaceId, "-").concat(userId);
|
|
77
161
|
(0, objectql_1.addConfig)(SPACEUSERCACHENAME, spaceUserSession);
|
|
78
162
|
}
|
|
79
163
|
exports.addSpaceSessionToCache = addSpaceSessionToCache;
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
164
|
+
/**
|
|
165
|
+
* 清除缓存
|
|
166
|
+
* @param spaceId
|
|
167
|
+
* @param userId
|
|
168
|
+
*/
|
|
169
|
+
function removeSpaceUserSessionFromCache(spaceId, userId) {
|
|
170
|
+
(0, objectql_1.removeConfig)(SPACEUSERCACHENAME, { _id: "".concat(spaceId, "-").concat(userId) });
|
|
171
|
+
}
|
|
172
|
+
exports.removeSpaceUserSessionFromCache = removeSpaceUserSessionFromCache;
|
|
173
|
+
function getSpaceUserSession(spaceId, userId) {
|
|
174
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
175
|
+
var spaceSession, expiredAt, su_1, suFields, spaceUsers, findSpaceUser, userSpaceId_1, userSpaceIds, roles, profile, _a, _b, _c, _d;
|
|
176
|
+
return __generator(this, function (_e) {
|
|
177
|
+
switch (_e.label) {
|
|
178
|
+
case 0:
|
|
179
|
+
spaceSession = getSpaceSessionFromCache(spaceId, userId);
|
|
180
|
+
if (!!spaceSession) return [3 /*break*/, 9];
|
|
181
|
+
expiredAt = new Date().getTime() + sessionCacheInMinutes * 60 * 1000;
|
|
182
|
+
su_1 = null;
|
|
183
|
+
suFields = ['_id', 'space', 'company_id', 'company_ids', 'organization', 'organizations', 'organizations_parents', 'user'];
|
|
184
|
+
return [4 /*yield*/, (0, objectql_1.getSteedosSchema)().getObject('space_users').directFind({ filters: "(user eq '".concat(userId, "') and (user_accepted eq true)"), fields: suFields })];
|
|
185
|
+
case 1:
|
|
186
|
+
spaceUsers = _e.sent();
|
|
187
|
+
findSpaceUser = _.find(spaceUsers, function (spaceUser) { return spaceUser.space === spaceId; });
|
|
188
|
+
if (findSpaceUser) {
|
|
189
|
+
su_1 = findSpaceUser;
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
su_1 = spaceUsers[0];
|
|
193
|
+
}
|
|
194
|
+
if (!su_1) return [3 /*break*/, 8];
|
|
195
|
+
userSpaceId_1 = su_1.space;
|
|
196
|
+
userSpaceIds = _.pluck(spaceUsers, 'space');
|
|
197
|
+
return [4 /*yield*/, getUserRoles(userId, userSpaceId_1)];
|
|
198
|
+
case 2:
|
|
199
|
+
roles = _e.sent();
|
|
200
|
+
return [4 /*yield*/, getSpaceUserProfile(userId, userSpaceId_1)];
|
|
201
|
+
case 3:
|
|
202
|
+
profile = _e.sent();
|
|
203
|
+
spaceSession = { roles: roles, profile: profile, expiredAt: expiredAt };
|
|
204
|
+
spaceSession.spaceId = userSpaceId_1;
|
|
205
|
+
_a = spaceSession;
|
|
206
|
+
return [4 /*yield*/, getSpaces(userSpaceIds)];
|
|
207
|
+
case 4:
|
|
208
|
+
_a.spaces = _e.sent();
|
|
209
|
+
spaceSession.space = _.find(spaceSession.spaces, function (record) { return record._id === userSpaceId_1; });
|
|
210
|
+
_b = spaceSession;
|
|
211
|
+
return [4 /*yield*/, getObjectDataByIds('company', su_1.company_ids, ['name', 'organization'])];
|
|
212
|
+
case 5:
|
|
213
|
+
_b.companies = _e.sent();
|
|
214
|
+
spaceSession.company = _.find(spaceSession.companies, function (record) { return record._id === su_1.company_id; });
|
|
215
|
+
_c = spaceSession;
|
|
216
|
+
return [4 /*yield*/, getObjectDataByIds('organizations', su_1.organizations, ['name', 'fullname', 'company_id'])];
|
|
217
|
+
case 6:
|
|
218
|
+
_c.organizations = _e.sent();
|
|
219
|
+
spaceSession.organization = _.find(spaceSession.organizations, function (record) { return record._id === su_1.organization; });
|
|
220
|
+
if (spaceSession.company) {
|
|
221
|
+
spaceSession.company_id = spaceSession.company._id;
|
|
222
|
+
}
|
|
223
|
+
if (spaceSession.companies) {
|
|
224
|
+
spaceSession.company_ids = spaceSession.companies.map(function (company) { return company._id; });
|
|
225
|
+
}
|
|
226
|
+
_d = spaceSession;
|
|
227
|
+
return [4 /*yield*/, getUserPermissionShares(su_1)];
|
|
228
|
+
case 7:
|
|
229
|
+
_d.permission_shares = _e.sent();
|
|
230
|
+
addSpaceSessionToCache(spaceId, userId, spaceSession);
|
|
231
|
+
return [3 /*break*/, 9];
|
|
232
|
+
case 8:
|
|
233
|
+
spaceSession = { roles: ['guest'], expiredAt: expiredAt };
|
|
234
|
+
_e.label = 9;
|
|
235
|
+
case 9:
|
|
236
|
+
if (spaceSession.space && spaceSession.space.admins) {
|
|
237
|
+
spaceSession.is_space_admin = spaceSession.space.admins.indexOf(userId) > -1;
|
|
238
|
+
}
|
|
239
|
+
return [2 /*return*/, spaceSession];
|
|
110
240
|
}
|
|
111
|
-
|
|
112
|
-
|
|
241
|
+
});
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
exports.getSpaceUserSession = getSpaceUserSession;
|
|
245
|
+
function updateSpaceUserSessionRolesCache(spaceId, userId) {
|
|
246
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
247
|
+
var spaceSession, _a;
|
|
248
|
+
return __generator(this, function (_b) {
|
|
249
|
+
switch (_b.label) {
|
|
250
|
+
case 0:
|
|
251
|
+
spaceSession = getSpaceSessionFromCache(spaceId, userId);
|
|
252
|
+
if (!spaceSession) return [3 /*break*/, 2];
|
|
253
|
+
_a = spaceSession;
|
|
254
|
+
return [4 /*yield*/, getUserRoles(userId, spaceId)];
|
|
255
|
+
case 1:
|
|
256
|
+
_a.roles = _b.sent();
|
|
257
|
+
return [2 /*return*/, true];
|
|
258
|
+
case 2: return [2 /*return*/, false];
|
|
113
259
|
}
|
|
114
|
-
|
|
115
|
-
|
|
260
|
+
});
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
exports.updateSpaceUserSessionRolesCache = updateSpaceUserSessionRolesCache;
|
|
264
|
+
/**
|
|
265
|
+
* 获取用户所属工作区记录,优先从缓存获取
|
|
266
|
+
* @param userSpaceIds
|
|
267
|
+
* @returns 工作区记录
|
|
268
|
+
*/
|
|
269
|
+
function getSpaces(userSpaceIds) {
|
|
270
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
271
|
+
var cacher, spaces, _i, userSpaceIds_1, sId, cacheDoc;
|
|
272
|
+
return __generator(this, function (_a) {
|
|
273
|
+
switch (_a.label) {
|
|
274
|
+
case 0:
|
|
275
|
+
cacher = (0, cachers_1.getCacher)(SPACES_CACHER_NAME);
|
|
276
|
+
spaces = [];
|
|
277
|
+
_i = 0, userSpaceIds_1 = userSpaceIds;
|
|
278
|
+
_a.label = 1;
|
|
279
|
+
case 1:
|
|
280
|
+
if (!(_i < userSpaceIds_1.length)) return [3 /*break*/, 5];
|
|
281
|
+
sId = userSpaceIds_1[_i];
|
|
282
|
+
cacheDoc = cacher.get(sId);
|
|
283
|
+
if (!!cacheDoc) return [3 /*break*/, 3];
|
|
284
|
+
return [4 /*yield*/, (0, objectql_1.getObject)('spaces').directFind({ filters: [['_id', '=', sId]], fields: ['_id', 'name', 'admins'] })];
|
|
285
|
+
case 2:
|
|
286
|
+
cacheDoc = (_a.sent())[0];
|
|
287
|
+
cacher.set(sId, cacheDoc);
|
|
288
|
+
_a.label = 3;
|
|
289
|
+
case 3:
|
|
290
|
+
spaces.push(cacheDoc);
|
|
291
|
+
_a.label = 4;
|
|
292
|
+
case 4:
|
|
293
|
+
_i++;
|
|
294
|
+
return [3 /*break*/, 1];
|
|
295
|
+
case 5:
|
|
296
|
+
if (_.isEmpty(spaces)) {
|
|
297
|
+
console.log(userSpaceIds);
|
|
298
|
+
}
|
|
299
|
+
return [2 /*return*/, spaces];
|
|
116
300
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
301
|
+
});
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* userSession支持实时更新
|
|
306
|
+
* 当space_users属性发生变更后清除userSession缓存
|
|
307
|
+
*/
|
|
308
|
+
function deleteSpaceUserSessionCacheByChangedProp(newDoc, oldDoc) {
|
|
309
|
+
var spaceId = oldDoc.space, userId = oldDoc.user;
|
|
310
|
+
// 由于space_users和users是单独缓存,故这里分别判断清除
|
|
311
|
+
// space_users session
|
|
312
|
+
var suProps = [
|
|
313
|
+
'company_id',
|
|
314
|
+
'company_ids',
|
|
315
|
+
'organization',
|
|
316
|
+
'organizations',
|
|
317
|
+
'profile', // 简档
|
|
318
|
+
];
|
|
319
|
+
var suChanged = (0, session_1.isPropValueChanged)(newDoc, oldDoc, suProps);
|
|
320
|
+
if (suChanged) {
|
|
321
|
+
removeSpaceUserSessionFromCache(spaceId, userId);
|
|
322
|
+
}
|
|
323
|
+
// user session
|
|
324
|
+
var uProps = [
|
|
325
|
+
'locale',
|
|
326
|
+
'mobile',
|
|
327
|
+
'name',
|
|
328
|
+
'username',
|
|
329
|
+
'email' // 邮箱
|
|
330
|
+
];
|
|
331
|
+
var uChanged = (0, session_1.isPropValueChanged)(newDoc, oldDoc, uProps);
|
|
332
|
+
if (uChanged) {
|
|
333
|
+
(0, userSession_1.removeUserSessionFromCache)(userId);
|
|
124
334
|
}
|
|
125
|
-
return spaceSession;
|
|
126
335
|
}
|
|
127
|
-
exports.
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
336
|
+
exports.deleteSpaceUserSessionCacheByChangedProp = deleteSpaceUserSessionCacheByChangedProp;
|
|
337
|
+
/**
|
|
338
|
+
* userSession支持实时更新
|
|
339
|
+
* 当spaces属性发生变更后清除spaces缓存
|
|
340
|
+
*/
|
|
341
|
+
function deleteSpaceCacheByChangedProp(newDoc, oldDoc) {
|
|
342
|
+
var spaceId = oldDoc._id;
|
|
343
|
+
var props = [
|
|
344
|
+
'name',
|
|
345
|
+
'admins', // 管理员
|
|
346
|
+
];
|
|
347
|
+
var changed = (0, session_1.isPropValueChanged)(newDoc, oldDoc, props);
|
|
348
|
+
if (changed) {
|
|
349
|
+
// 清除spaces缓存
|
|
350
|
+
var cacher = (0, cachers_1.getCacher)(SPACES_CACHER_NAME);
|
|
351
|
+
cacher["delete"](spaceId);
|
|
352
|
+
// 如果admins发生了变化,则需要清除变化的人员的缓存
|
|
353
|
+
var changeAdmins = _.difference(newDoc.admins, oldDoc.admins).concat(_.difference(oldDoc.admins, newDoc.admins));
|
|
354
|
+
for (var _i = 0, changeAdmins_1 = changeAdmins; _i < changeAdmins_1.length; _i++) {
|
|
355
|
+
var userId = changeAdmins_1[_i];
|
|
356
|
+
removeSpaceUserSessionFromCache(spaceId, userId);
|
|
357
|
+
}
|
|
133
358
|
}
|
|
134
|
-
return false;
|
|
135
359
|
}
|
|
136
|
-
exports.
|
|
360
|
+
exports.deleteSpaceCacheByChangedProp = deleteSpaceCacheByChangedProp;
|
|
137
361
|
//# sourceMappingURL=spaceUserSession.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spaceUserSession.js","sourceRoot":"","sources":["../src/spaceUserSession.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"spaceUserSession.js","sourceRoot":"","sources":["../src/spaceUserSession.ts"],"names":[],"mappings":"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"}
|