Browse Source

:pencil2: Fixed merge issues

juan-filtering-match-pool
tomit4 2 years ago
parent
commit
7b2f797202

+ 12
- 12
backend/lib/auth/strategies/jwt.js View File

36
         },
36
         },
37
         // TODO: Naming conventions need to be reversed again??
37
         // TODO: Naming conventions need to be reversed again??
38
         validate: async (decoded, request, h) => {
38
         validate: async (decoded, request, h) => {
39
-            const accessTokenFromHeaders = request.headers.authorization
40
-            const hashedAccessTokenFromHeaders = await hashToken(
41
-                accessTokenFromHeaders,
39
+            const sessionTokenFromHeaders = request.headers.authorization
40
+            const hashedSessionTokenFromHeaders = await hashToken(
41
+                sessionTokenFromHeaders,
42
             )
42
             )
43
             const activeSession =
43
             const activeSession =
44
-                request.server.app.activeSessions[hashedAccessTokenFromHeaders]
44
+                request.server.app.activeSessions[hashedSessionTokenFromHeaders]
45
             if (!activeSession)
45
             if (!activeSession)
46
                 throw new Error(
46
                 throw new Error(
47
-                    `No session found for ${hashedAccessTokenFromHeaders}`,
47
+                    `No session found for ${hashedSessionTokenFromHeaders}`,
48
                 )
48
                 )
49
 
49
 
50
-            const accessToken = activeSession.accessToken
51
             const sessionToken = activeSession.sessionToken
50
             const sessionToken = activeSession.sessionToken
52
-            const validatedAccessToken = validateToken(accessToken)
51
+            const accessToken = activeSession.accessToken
53
             const validatedSessionToken = validateToken(sessionToken)
52
             const validatedSessionToken = validateToken(sessionToken)
54
-            if (!validatedSessionToken.payload) {
55
-                console.log('sessionToken no longer valid, reissuing... ')
56
-                activeSession.sessionToken = createToken(
57
-                    { payload: validatedAccessToken.payload },
53
+            const validatedAccessToken = validateToken(accessToken)
54
+            if (!validatedAccessToken.payload) {
55
+                console.log('accessToken no longer valid, reissuing... ')
56
+                activeSession.accessToken = createToken(
57
+                    { payload: validatedSessionToken.payload },
58
                     // NOTE: Expiration of new sessionToken set for 200 seconds (testing)
58
                     // NOTE: Expiration of new sessionToken set for 200 seconds (testing)
59
                     100,
59
                     100,
60
                 )
60
                 )
61
             }
61
             }
62
             try {
62
             try {
63
                 const validatedJwt = JWT.verify(
63
                 const validatedJwt = JWT.verify(
64
-                    accessToken,
64
+                    sessionToken,
65
                     process.env.APP_SECRET,
65
                     process.env.APP_SECRET,
66
                 )
66
                 )
67
                 return { isValid: true, credentials: validatedJwt.email }
67
                 return { isValid: true, credentials: validatedJwt.email }

+ 2
- 2
backend/lib/plugins/user.js View File

14
 const UserSignupRoute = require('../routes/user/signup')
14
 const UserSignupRoute = require('../routes/user/signup')
15
 const UserEmailRoute = require('../routes/user/email.js')
15
 const UserEmailRoute = require('../routes/user/email.js')
16
 const UserVerifyActiveRoute = require('../routes/user/verifyactivesession.js')
16
 const UserVerifyActiveRoute = require('../routes/user/verifyactivesession.js')
17
-const UserGetAccessRoute = require('../routes/user/getaccess.js')
17
+const UserGetSessionRoute = require('../routes/user/get-session.js')
18
 const UserValidateSessionRoute = require('../routes/user/validatesession.js')
18
 const UserValidateSessionRoute = require('../routes/user/validatesession.js')
19
 const UserRemoveSessionRoute = require('../routes/user/removesession.js')
19
 const UserRemoveSessionRoute = require('../routes/user/removesession.js')
20
 const UserPassword = require('../routes/user/authentication')
20
 const UserPassword = require('../routes/user/authentication')
56
         await server.route(UserProfilesListRoute)
56
         await server.route(UserProfilesListRoute)
57
         await server.route(UserEmailRoute)
57
         await server.route(UserEmailRoute)
58
         await server.route(UserVerifyActiveRoute)
58
         await server.route(UserVerifyActiveRoute)
59
-        await server.route(UserGetAccessRoute)
59
+        await server.route(UserGetSessionRoute)
60
         await server.route(UserValidateSessionRoute)
60
         await server.route(UserValidateSessionRoute)
61
         await server.route(UserRemoveSessionRoute)
61
         await server.route(UserRemoveSessionRoute)
62
         await server.route(UserPassword)
62
         await server.route(UserPassword)

+ 1
- 1
backend/lib/routes/user/authentication.js View File

16
 /** Validator functions by request method */
16
 /** Validator functions by request method */
17
 const validators = {
17
 const validators = {
18
     /** Validate the route params (/active/{thing}) */
18
     /** Validate the route params (/active/{thing}) */
19
-    params: params.userEmail
19
+    params: params.userEmail,
20
 }
20
 }
21
 
21
 
22
 module.exports = {
22
 module.exports = {

+ 4
- 4
backend/lib/routes/user/email.js View File

25
             const userCredentials = request.payload
25
             const userCredentials = request.payload
26
             try {
26
             try {
27
                 const emailSent = await userService.emailSent(userCredentials)
27
                 const emailSent = await userService.emailSent(userCredentials)
28
-                const hashedAccessToken = Object.keys(
28
+                const hashedSessionToken = Object.keys(
29
                     userService.activeSessions,
29
                     userService.activeSessions,
30
                 ).find(hashedToken => {
30
                 ).find(hashedToken => {
31
                     return (
31
                     return (
35
                 })
35
                 })
36
                 // Registers the activeSessions object for use by jwt auth strategy
36
                 // Registers the activeSessions object for use by jwt auth strategy
37
                 request.server.app.activeSessions = userService.activeSessions
37
                 request.server.app.activeSessions = userService.activeSessions
38
-                if (!hashedAccessToken.length) {
39
-                    throw Error('hashedAccessToken not Found!!')
38
+                if (!hashedSessionToken?.length) {
39
+                    throw Error('hashedSessionToken not Found!!')
40
                 }
40
                 }
41
                 return {
41
                 return {
42
                     ok: true,
42
                     ok: true,
43
                     handler: pluginConfig.handlerType,
43
                     handler: pluginConfig.handlerType,
44
                     data: {
44
                     data: {
45
                         emailSentSuccessfully: emailSent.wasSuccessfull,
45
                         emailSentSuccessfully: emailSent.wasSuccessfull,
46
-                        hashedAccessToken: hashedAccessToken,
46
+                        hashedSessionToken,
47
                     },
47
                     },
48
                 }
48
                 }
49
             } catch (err) {
49
             } catch (err) {

backend/lib/routes/user/getaccess.js → backend/lib/routes/user/get-session.js View File

14
 
14
 
15
 module.exports = {
15
 module.exports = {
16
     method: 'POST',
16
     method: 'POST',
17
-    path: '/getaccess',
17
+    path: '/get-session',
18
     options: {
18
     options: {
19
         ...pluginConfig.docs.get,
19
         ...pluginConfig.docs.get,
20
         tags: ['api'],
20
         tags: ['api'],
26
         handler: async function (request, h) {
26
         handler: async function (request, h) {
27
             const { userService } = request.server.services()
27
             const { userService } = request.server.services()
28
             const res = request.payload
28
             const res = request.payload
29
-            // NOTE: Access Token set for 5 minutes expiration (default)
30
-            const accessToken = await userService.createToken(res, 600)
29
+            // NOTE: Session Token set for 5 minutes expiration (default)
30
+            const sessionToken = await userService.createToken(res, 600)
31
             try {
31
             try {
32
                 const response = h.response({
32
                 const response = h.response({
33
                     ok: true,
33
                     ok: true,
34
                     handler: pluginConfig.handlerType,
34
                     handler: pluginConfig.handlerType,
35
-                    data: accessToken,
35
+                    data: sessionToken,
36
                 })
36
                 })
37
-                response.header('Authorization', accessToken)
37
+                response.header('Authorization', sessionToken)
38
                 return response
38
                 return response
39
             } catch (err) {
39
             } catch (err) {
40
                 return {
40
                 return {

+ 0
- 1
backend/lib/routes/user/login.js View File

34
         handler: async function (request, h) {
34
         handler: async function (request, h) {
35
             try {
35
             try {
36
                 const { userService } = request.server.services()
36
                 const { userService } = request.server.services()
37
-                console.log('testing from here login.js :=>')
38
                 const res = request.payload
37
                 const res = request.payload
39
 
38
 
40
                 // Callback to use as transaction
39
                 // Callback to use as transaction

+ 2
- 2
backend/lib/routes/user/removesession.js View File

25
             exposedHeaders: ['Authorization', 'Access-Control-Expose-Headers'],
25
             exposedHeaders: ['Authorization', 'Access-Control-Expose-Headers'],
26
         },
26
         },
27
         handler: async function (request, h) {
27
         handler: async function (request, h) {
28
-            const hashedAccessToken = request.payload
28
+            const hashedSessionToken = request.payload
29
             const { userService } = request.server.services()
29
             const { userService } = request.server.services()
30
             try {
30
             try {
31
-                await userService.removeSession(hashedAccessToken)
31
+                await userService.removeSession(hashedSessionToken)
32
                 return {
32
                 return {
33
                     ok: true,
33
                     ok: true,
34
                     handler: pluginConfig.handlerType,
34
                     handler: pluginConfig.handlerType,

+ 2
- 2
backend/lib/routes/user/validatesession.js View File

25
             exposedHeaders: ['Authorization', 'Access-Control-Expose-Headers'],
25
             exposedHeaders: ['Authorization', 'Access-Control-Expose-Headers'],
26
         },
26
         },
27
         handler: async function (request, h) {
27
         handler: async function (request, h) {
28
-            const hashedAccessToken = request.payload
28
+            const hashedSessionToken = request.payload
29
             const { userService, profileService } = request.server.services()
29
             const { userService, profileService } = request.server.services()
30
             try {
30
             try {
31
                 const validatedSessionToken =
31
                 const validatedSessionToken =
32
-                    userService.validateSession(hashedAccessToken)
32
+                    userService.validateSession(hashedSessionToken)
33
                 const user = await userService.findByUserEmail(
33
                 const user = await userService.findByUserEmail(
34
                     validatedSessionToken.email,
34
                     validatedSessionToken.email,
35
                 )
35
                 )

+ 2
- 1
backend/lib/routes/user/verifyactivesession.js View File

29
                 ).find(hashedToken => {
29
                 ).find(hashedToken => {
30
                     return hashedToken === hash
30
                     return hashedToken === hash
31
                 })
31
                 })
32
-                if (!hashToMatch.length) {
32
+                console.log('hashToMatch :=>', hashToMatch)
33
+                if (!hashToMatch?.length) {
33
                     throw Error('hashToMatch Not Found!')
34
                     throw Error('hashToMatch Not Found!')
34
                 }
35
                 }
35
                 const now = Date.now()
36
                 const now = Date.now()

+ 16
- 16
backend/lib/services/user.js View File

269
      * @param {HashedSessionToken} hashedSessionToken
269
      * @param {HashedSessionToken} hashedSessionToken
270
      * @returns {PayloadFromActiveSessions}
270
      * @returns {PayloadFromActiveSessions}
271
      */
271
      */
272
-    validateSession(hashedAccessToken) {
273
-        const userSession = this.activeSessions[hashedAccessToken]
272
+    validateSession(hashedSessionToken) {
273
+        const userSession = this.activeSessions[hashedSessionToken]
274
         if (!userSession) {
274
         if (!userSession) {
275
             throw new Error(
275
             throw new Error(
276
                 'hashedSessionToken not in activeSessions registry!',
276
                 'hashedSessionToken not in activeSessions registry!',
279
         if (!userSession.emailWasRespondedTo) {
279
         if (!userSession.emailWasRespondedTo) {
280
             throw new Error('email was never responded to!')
280
             throw new Error('email was never responded to!')
281
         }
281
         }
282
-        const accessToken = userSession.accessToken
283
-        const accessTokenIsValid = this.validateToken(accessToken)
282
+        const sessionToken = userSession.sessionToken
283
+        const sessionTokenIsValid = this.validateToken(sessionToken)
284
         return {
284
         return {
285
-            ...accessTokenIsValid.payload,
286
-            accessToken: this.activeSessions[hashedAccessToken].accessToken,
285
+            ...sessionTokenIsValid.payload,
286
+            sessionToken: this.activeSessions[hashedSessionToken].sessionToken,
287
         }
287
         }
288
     }
288
     }
289
-    removeSession(hashedAccessToken) {
290
-        const userSession = this.activeSessions[hashedAccessToken]
289
+    removeSession(hashedSessionToken) {
290
+        const userSession = this.activeSessions[hashedSessionToken]
291
         if (!userSession) {
291
         if (!userSession) {
292
             throw new Error(
292
             throw new Error(
293
                 'hashedSessionToken not in activeSessions registry!',
293
                 'hashedSessionToken not in activeSessions registry!',
294
             )
294
             )
295
         } else {
295
         } else {
296
-            delete this.activeSessions[hashedAccessToken]
296
+            delete this.activeSessions[hashedSessionToken]
297
         }
297
         }
298
     }
298
     }
299
     /**
299
     /**
334
      * @ returns {Object}
334
      * @ returns {Object}
335
      */
335
      */
336
     async emailSent(userCredentials) {
336
     async emailSent(userCredentials) {
337
-        const hashedAccessToken = await this.hashToken(
338
-            userCredentials.accessToken,
337
+        const hashedSessionToken = await this.hashToken(
338
+            userCredentials.sessionToken,
339
         )
339
         )
340
-        if (Object.keys(this.activeSessions).includes(hashedAccessToken)) {
340
+        if (Object.keys(this.activeSessions).includes(hashedSessionToken)) {
341
             return new Error('session already in cache!!')
341
             return new Error('session already in cache!!')
342
         }
342
         }
343
         // Set expiration time for ten minutes from now
343
         // Set expiration time for ten minutes from now
344
         const duration = 600000
344
         const duration = 600000
345
 
345
 
346
-        this.activeSessions[hashedAccessToken] = {
346
+        this.activeSessions[hashedSessionToken] = {
347
             email: userCredentials.email,
347
             email: userCredentials.email,
348
             name: userCredentials.name,
348
             name: userCredentials.name,
349
             seeking: userCredentials.seeking,
349
             seeking: userCredentials.seeking,
350
-            accessToken: userCredentials.accessToken,
350
+            sessionToken: userCredentials.sessionToken,
351
             expiration: Date.now() + duration,
351
             expiration: Date.now() + duration,
352
             emailWasRespondedTo: false,
352
             emailWasRespondedTo: false,
353
-            sessionToken: null,
353
+            accessToken: null,
354
         }
354
         }
355
 
355
 
356
         const sendSmtpEmail = {
356
         const sendSmtpEmail = {
362
             templateId: 2,
362
             templateId: 2,
363
             params: {
363
             params: {
364
                 // TODO: Change this in production...
364
                 // TODO: Change this in production...
365
-                link: `localhost:3000/verify/${hashedAccessToken}`,
365
+                link: `localhost:3000/verify/${hashedSessionToken}`,
366
             },
366
             },
367
         }
367
         }
368
 
368
 

+ 5
- 5
frontend/src/components/onboarding/Auth.vue View File

44
                 password: userPass.val,
44
                 password: userPass.val,
45
             })
45
             })
46
             await this.createProfileForNewUser(newUserId, this.responses)
46
             await this.createProfileForNewUser(newUserId, this.responses)
47
-            const accessToken = await this.getAccessToken({
47
+            const sessionToken = await this.getSessionToken({
48
                 ...this.answered,
48
                 ...this.answered,
49
             })
49
             })
50
             const sessionInfo = await authenticator.sendAuthEmail({
50
             const sessionInfo = await authenticator.sendAuthEmail({
51
                 ...this.answered,
51
                 ...this.answered,
52
-                accessToken: accessToken,
52
+                sessionToken: sessionToken,
53
             })
53
             })
54
-            document.cookie = `siimee_access=${sessionInfo.hashedAccessToken}; max-age=600; path=/; secure`
54
+            document.cookie = `siimee_session=${sessionInfo.hashedSessionToken}; max-age=600; path=/; secure`
55
         } catch (err) {
55
         } catch (err) {
56
             // TODO: render an error page in this component displaying which
56
             // TODO: render an error page in this component displaying which
57
             // error occurred and how to reach out to staff
57
             // error occurred and how to reach out to staff
65
                     'User has not answered minimum amount of questions to create profile',
65
                     'User has not answered minimum amount of questions to create profile',
66
                 )
66
                 )
67
         },
67
         },
68
-        async getAccessToken(payload) {
69
-            return await authenticator.getAccessToken({
68
+        async getSessionToken(payload) {
69
+            return await authenticator.getSessionToken({
70
                 payload,
70
                 payload,
71
             })
71
             })
72
         },
72
         },

+ 5
- 3
frontend/src/router/guards.js View File

15
 }
15
 }
16
 
16
 
17
 const loginIfToken = async () => {
17
 const loginIfToken = async () => {
18
-    const sessionData = await authenticator.verifySessionCookie('siimee_access')
18
+    const sessionData = await authenticator.verifySessionCookie(
19
+        'siimee_session',
20
+    )
19
     if (
21
     if (
20
         sessionData?.profileId &&
22
         sessionData?.profileId &&
21
-        sessionData?.accessToken &&
23
+        sessionData?.sessionToken &&
22
         !currentProfile.isLoggedIn
24
         !currentProfile.isLoggedIn
23
     ) {
25
     ) {
24
         await currentProfile.login(
26
         await currentProfile.login(
25
             sessionData.profileId,
27
             sessionData.profileId,
26
             WaveUI.instance.notify,
28
             WaveUI.instance.notify,
27
-            sessionData.accessToken,
29
+            sessionData.sessionToken,
28
         )
30
         )
29
     }
31
     }
30
 }
32
 }

+ 6
- 6
frontend/src/services/auth.service.js View File

10
     async verifyAuthSession(hashedToken) {
10
     async verifyAuthSession(hashedToken) {
11
         return await db.get(`/user/verify/${hashedToken}`)
11
         return await db.get(`/user/verify/${hashedToken}`)
12
     }
12
     }
13
-    async getAccessToken(req) {
14
-        return await db.post('/user/getaccess', req, true)
13
+    async getSessionToken(req) {
14
+        return await db.post('/user/get-session', req, true)
15
     }
15
     }
16
-    async validateSession(hashedAccessToken) {
17
-        return await db.post('/user/validatesession', hashedAccessToken, true)
16
+    async validateSession(hashedSessionToken) {
17
+        return await db.post('/user/validatesession', hashedSessionToken, true)
18
     }
18
     }
19
     async authenticateLoginCredentials(credentials) {
19
     async authenticateLoginCredentials(credentials) {
20
         return await db.post('/user/login', credentials)
20
         return await db.post('/user/login', credentials)
21
     }
21
     }
22
-    async removeSession(hashedAccessToken) {
23
-        return await db.post('/user/removesession', hashedAccessToken, true)
22
+    async removeSession(hashedSessionToken) {
23
+        return await db.post('/user/removesession', hashedSessionToken, true)
24
     }
24
     }
25
     grabStoredCookie(cookieKey) {
25
     grabStoredCookie(cookieKey) {
26
         const cookies = document.cookie.split('; ').reduce((prev, current) => {
26
         const cookies = document.cookie.split('; ').reduce((prev, current) => {

+ 4
- 4
frontend/src/views/HomeView.vue View File

99
             if (currentProfile.isLoggedIn) {
99
             if (currentProfile.isLoggedIn) {
100
                 currentProfile.logout()
100
                 currentProfile.logout()
101
             }
101
             }
102
-            const hashedAccessToken =
103
-                authenticator.grabStoredCookie('siimee_access')
102
+            const hashedSessionToken =
103
+                authenticator.grabStoredCookie('siimee_session')
104
             const removedSession = await authenticator.removeSession(
104
             const removedSession = await authenticator.removeSession(
105
-                hashedAccessToken,
105
+                hashedSessionToken,
106
             )
106
             )
107
             if (removedSession.error)
107
             if (removedSession.error)
108
                 console.error('ERROR :=>', removedSession.error)
108
                 console.error('ERROR :=>', removedSession.error)
109
-            document.cookie = `siimee_access=''; max-age=0; path=/; secure`
109
+            document.cookie = `siimee_session=''; max-age=0; path=/; secure`
110
             this.$router.push('/onboarding')
110
             this.$router.push('/onboarding')
111
         },
111
         },
112
         // this can be placed in utils/notification.js
112
         // this can be placed in utils/notification.js

+ 2
- 2
frontend/src/views/LoginView.vue View File

37
             // emailSentSuccessfully: emailSent.wasSuccessfull,
37
             // emailSentSuccessfully: emailSent.wasSuccessfull,
38
             const sessionInfo = await authenticator.sendAuthEmail({
38
             const sessionInfo = await authenticator.sendAuthEmail({
39
                 ...credentials.answered,
39
                 ...credentials.answered,
40
-                accessToken: credentials.jwt,
40
+                sessionToken: credentials.jwt,
41
             })
41
             })
42
             if (sessionInfo.emailSentSuccessfully) {
42
             if (sessionInfo.emailSentSuccessfully) {
43
                 this.emailSentSuccessfully = true
43
                 this.emailSentSuccessfully = true
44
             }
44
             }
45
-            document.cookie = `siimee_access=${sessionInfo.hashedAccessToken}; max-age=600; path=/; secure`
45
+            document.cookie = `siimee_session=${sessionInfo.hashedSessionToken}; max-age=600; path=/; secure`
46
         },
46
         },
47
     },
47
     },
48
 }
48
 }

+ 3
- 3
frontend/src/views/OnboardingView.vue View File

57
         this.survey = await surveyFactory.createSurvey()
57
         this.survey = await surveyFactory.createSurvey()
58
         try {
58
         try {
59
             const sessionData =
59
             const sessionData =
60
-                await authenticator.verifySessionCookie('siimee_access')
60
+                await authenticator.verifySessionCookie('siimee_session')
61
             if (sessionData) {
61
             if (sessionData) {
62
                 await currentProfile.login(
62
                 await currentProfile.login(
63
                     sessionData.profileId,
63
                     sessionData.profileId,
64
                     this.$waveui.notify,
64
                     this.$waveui.notify,
65
-                    sessionData.accessToken,
65
+                    sessionData.sessionToken,
66
                 )
66
                 )
67
                 this.responses = this.formatResponses(
67
                 this.responses = this.formatResponses(
68
                     currentProfile._profile.responses,
68
                     currentProfile._profile.responses,
115
                 )
115
                 )
116
                 currentProfile._profile.responses = this.responses
116
                 currentProfile._profile.responses = this.responses
117
                 try {
117
                 try {
118
-                    await authenticator.verifySessionCookie('siimee_access')
118
+                    await authenticator.verifySessionCookie('siimee_session')
119
                 } catch (err) {
119
                 } catch (err) {
120
                     this.currentStep = 0
120
                     this.currentStep = 0
121
                     this.goToStep(this.currentStep)
121
                     this.goToStep(this.currentStep)

Loading…
Cancel
Save