proto.io 0.0.150 → 0.0.152

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/dist/index.mjs CHANGED
@@ -1112,7 +1112,10 @@ const _session = (proto, request) => {
1112
1112
  const cached = sessionMap.get(request);
1113
1113
  if (cached)
1114
1114
  return cached;
1115
- sessionMap.set(request, { sessionId: randomUUID() });
1115
+ sessionMap.set(request, {
1116
+ sessionId: randomUUID(),
1117
+ createdAt: new Date,
1118
+ });
1116
1119
  const jwtToken = proto[PVK].options.jwtToken;
1117
1120
  if (_.isEmpty(jwtToken))
1118
1121
  throw Error('Invalid jwt token');
@@ -1131,8 +1134,9 @@ const _session = (proto, request) => {
1131
1134
  if (!_.isObject(payload))
1132
1135
  return;
1133
1136
  const session = {
1134
- sessionId: payload.sessionId ?? randomUUID(),
1135
1137
  ...payload,
1138
+ sessionId: payload.sessionId ?? randomUUID(),
1139
+ createdAt: new Date(payload.createdAt),
1136
1140
  };
1137
1141
  sessionMap.set(request, session);
1138
1142
  return session;
@@ -1144,9 +1148,9 @@ const sessionId = (proto, request) => {
1144
1148
  const sessionInfoMap = new WeakMap();
1145
1149
  const fetchSessionInfo = async (proto, userId) => {
1146
1150
  const user = _.isString(userId) ? await proto.Query('User').get(userId, { master: true }) : undefined;
1147
- const roles = user instanceof TUser ? _.compact(_.map(await proto.userRoles(user), x => x.name)) : [];
1151
+ const roles = user instanceof TUser ? _.filter(await proto.userRoles(user), x => !_.isEmpty(x.name)) : [];
1148
1152
  return {
1149
- roles: roles,
1153
+ _roles: roles,
1150
1154
  user: user instanceof TUser ? user : undefined,
1151
1155
  };
1152
1156
  };
@@ -1176,9 +1180,13 @@ const signUser = async (proto, res, user, options) => {
1176
1180
  if (_.isNil(proto[PVK].options.jwtToken))
1177
1181
  return;
1178
1182
  const session = _session(proto, res.req);
1179
- const sessionId = sessionMap.get(res.req)?.sessionId ?? session?.sessionId ?? randomUUID();
1180
1183
  const cookieOptions = options?.cookieOptions ?? session?.cookieOptions ?? proto[PVK].options.cookieOptions;
1181
- const token = proto[PVK].jwtSign({ sessionId, user: user?.objectId, cookieOptions }, options?.jwtSignOptions ?? 'login');
1184
+ const token = proto[PVK].jwtSign({
1185
+ sessionId: session?.sessionId ?? randomUUID(),
1186
+ createdAt: session?.createdAt?.getTime() ?? Date.now(),
1187
+ user: user?.objectId,
1188
+ cookieOptions,
1189
+ }, options?.jwtSignOptions ?? 'login');
1182
1190
  res.cookie(AUTH_COOKIE_KEY, token, cookieOptions);
1183
1191
  sessionInfoMap.set(res.req, user ? await fetchSessionInfo(proto, user.objectId) : {});
1184
1192
  };
@@ -1343,9 +1351,13 @@ class ProtoService extends ProtoType {
1343
1351
  const session = await this.sessionInfo();
1344
1352
  return session?.user;
1345
1353
  }
1346
- async currentRoles() {
1354
+ async _currentRoles() {
1347
1355
  const session = await this.sessionInfo();
1348
- return session?.roles ?? [];
1356
+ return session?._roles ?? [];
1357
+ }
1358
+ async currentRoles() {
1359
+ const roles = await this._currentRoles();
1360
+ return _.compact(_.map(roles, x => x.name));
1349
1361
  }
1350
1362
  get isMaster() {
1351
1363
  return this.req ? sessionIsMaster(this, this.req) === 'valid' : false;