|
|
@@ -31,8 +31,33 @@ module.exports = {
|
|
31
|
31
|
const hashedSessionToken = request.payload
|
|
32
|
32
|
const { userService, profileService } = request.server.services()
|
|
33
|
33
|
try {
|
|
34
|
|
- const validatedSessionInfo =
|
|
35
|
|
- userService.validateSession(hashedSessionToken)
|
|
|
34
|
+ if (!hashedSessionToken) {
|
|
|
35
|
+ throw new Error('hashedSessionToken not passed!')
|
|
|
36
|
+ }
|
|
|
37
|
+ const userSession =
|
|
|
38
|
+ userService.activeSessions[hashedSessionToken]
|
|
|
39
|
+ if (!userSession) {
|
|
|
40
|
+ throw new Error(
|
|
|
41
|
+ 'hashedSessionToken not in activeSessions registry!',
|
|
|
42
|
+ )
|
|
|
43
|
+ }
|
|
|
44
|
+ if (!userSession.emailWasRespondedTo) {
|
|
|
45
|
+ throw new Error(
|
|
|
46
|
+ `Email was never responded to! ${userSession.emailWasRespondedTo}`,
|
|
|
47
|
+ )
|
|
|
48
|
+ }
|
|
|
49
|
+ if (!userSession.sessionToken) {
|
|
|
50
|
+ throw new Error(
|
|
|
51
|
+ `No session token in userSession ${userSession.sessionToken}`,
|
|
|
52
|
+ )
|
|
|
53
|
+ }
|
|
|
54
|
+ const sessionTokenIsValid = userService.validateToken(
|
|
|
55
|
+ userSession.sessionToken,
|
|
|
56
|
+ )
|
|
|
57
|
+ const validatedSessionInfo = sessionTokenIsValid
|
|
|
58
|
+ ? userSession
|
|
|
59
|
+ : { ...sessionTokenIsValid.payload }
|
|
|
60
|
+
|
|
36
|
61
|
if (validatedSessionInfo?.email)
|
|
37
|
62
|
throw new Error(
|
|
38
|
63
|
`Could not validate token based on payload: ${request.payload}`,
|