proto.io 0.0.153 → 0.0.154

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
@@ -1106,7 +1106,12 @@ const _sessionWithToken = (proto, token) => {
1106
1106
  const payload = proto[PVK].jwtVarify(token, 'login');
1107
1107
  if (!_.isObject(payload))
1108
1108
  return;
1109
- return payload;
1109
+ return {
1110
+ ...payload,
1111
+ sessionId: payload.sessionId ?? randomUUID(),
1112
+ createdAt: payload.createdAt && _.isSafeInteger(payload.createdAt) ? new Date(payload.createdAt) : new Date,
1113
+ loginedAt: payload.loginedAt && _.isSafeInteger(payload.loginedAt) ? new Date(payload.loginedAt) : new Date,
1114
+ };
1110
1115
  };
1111
1116
  const _session = (proto, request) => {
1112
1117
  const cached = sessionMap.get(request);
@@ -1115,6 +1120,7 @@ const _session = (proto, request) => {
1115
1120
  sessionMap.set(request, {
1116
1121
  sessionId: randomUUID(),
1117
1122
  createdAt: new Date,
1123
+ loginedAt: new Date,
1118
1124
  });
1119
1125
  const jwtToken = proto[PVK].options.jwtToken;
1120
1126
  if (_.isEmpty(jwtToken))
@@ -1130,14 +1136,9 @@ const _session = (proto, request) => {
1130
1136
  }
1131
1137
  if (_.isEmpty(authorization))
1132
1138
  return;
1133
- const payload = proto[PVK].jwtVarify(authorization, 'login');
1134
- if (!_.isObject(payload))
1139
+ const session = _sessionWithToken(proto, authorization);
1140
+ if (!_.isObject(session))
1135
1141
  return;
1136
- const session = {
1137
- ...payload,
1138
- sessionId: payload.sessionId ?? randomUUID(),
1139
- createdAt: payload.createdAt && _.isSafeInteger(payload.createdAt) ? new Date(payload.createdAt) : new Date,
1140
- };
1141
1142
  sessionMap.set(request, session);
1142
1143
  return session;
1143
1144
  };
@@ -1156,18 +1157,29 @@ const fetchSessionInfo = async (proto, userId) => {
1156
1157
  };
1157
1158
  const sessionWithToken = async (proto, token) => {
1158
1159
  const session = _sessionWithToken(proto, token);
1159
- const sessionId = session?.sessionId;
1160
1160
  const info = await fetchSessionInfo(proto, session?.user);
1161
- return { sessionId, ...info };
1161
+ return {
1162
+ ...session ?? {},
1163
+ ...info,
1164
+ loginedAt: info?.user ? session?.loginedAt : undefined,
1165
+ };
1162
1166
  };
1163
1167
  const session = async (proto, request) => {
1164
1168
  const session = _session(proto, request);
1165
1169
  const cached = sessionInfoMap.get(request);
1166
1170
  if (cached)
1167
- return { ...session ?? {}, ...cached };
1171
+ return {
1172
+ ...session ?? {},
1173
+ ...cached,
1174
+ loginedAt: cached?.user ? session?.loginedAt : undefined,
1175
+ };
1168
1176
  const info = await fetchSessionInfo(proto, session?.user);
1169
1177
  sessionInfoMap.set(request, info);
1170
- return { ...session ?? {}, ...info };
1178
+ return {
1179
+ ...session ?? {},
1180
+ ...info,
1181
+ loginedAt: info?.user ? session?.loginedAt : undefined,
1182
+ };
1171
1183
  };
1172
1184
  const sessionIsMaster = (proto, request) => {
1173
1185
  const user = request.header(MASTER_USER_HEADER_NAME);
@@ -1184,6 +1196,7 @@ const signUser = async (proto, res, user, options) => {
1184
1196
  const token = proto[PVK].jwtSign({
1185
1197
  sessionId: session?.sessionId ?? randomUUID(),
1186
1198
  createdAt: session?.createdAt?.getTime() ?? Date.now(),
1199
+ loginedAt: user ? session?.loginedAt?.getTime() ?? Date.now() : undefined,
1187
1200
  user: user?.objectId,
1188
1201
  cookieOptions,
1189
1202
  }, options?.jwtSignOptions ?? 'login');