Sfoglia il codice sorgente

:pencil2: Fixed merge issues

juan-filtering-match-pool
tomit4 2 anni fa
parent
commit
7b2f797202

+ 12
- 12
backend/lib/auth/strategies/jwt.js Vedi 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 Vedi 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 Vedi 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 Vedi 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 Vedi 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 Vedi 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 Vedi 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 Vedi 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 Vedi 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 Vedi 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 Vedi 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 Vedi 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 Vedi 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 Vedi 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 Vedi 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 Vedi 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…
Annulla
Salva