Bläddra i källkod

:pencil2: Fixed merge issues

tags/0.0.4
tomit4 2 år sedan
förälder
incheckning
f345b96c87

+ 12
- 12
backend/lib/auth/strategies/jwt.js Visa fil

@@ -36,32 +36,32 @@ module.exports = options => {
36 36
         },
37 37
         // TODO: Naming conventions need to be reversed again??
38 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 43
             const activeSession =
44
-                request.server.app.activeSessions[hashedAccessTokenFromHeaders]
44
+                request.server.app.activeSessions[hashedSessionTokenFromHeaders]
45 45
             if (!activeSession)
46 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 50
             const sessionToken = activeSession.sessionToken
52
-            const validatedAccessToken = validateToken(accessToken)
51
+            const accessToken = activeSession.accessToken
53 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 58
                     // NOTE: Expiration of new sessionToken set for 200 seconds (testing)
59 59
                     100,
60 60
                 )
61 61
             }
62 62
             try {
63 63
                 const validatedJwt = JWT.verify(
64
-                    accessToken,
64
+                    sessionToken,
65 65
                     process.env.APP_SECRET,
66 66
                 )
67 67
                 return { isValid: true, credentials: validatedJwt.email }

+ 2
- 2
backend/lib/plugins/user.js Visa fil

@@ -14,7 +14,7 @@ const UserLoginRoute = require('../routes/user/login')
14 14
 const UserSignupRoute = require('../routes/user/signup')
15 15
 const UserEmailRoute = require('../routes/user/email.js')
16 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 18
 const UserValidateSessionRoute = require('../routes/user/validatesession.js')
19 19
 const UserRemoveSessionRoute = require('../routes/user/removesession.js')
20 20
 const UserPassword = require('../routes/user/authentication')
@@ -56,7 +56,7 @@ module.exports = {
56 56
         await server.route(UserProfilesListRoute)
57 57
         await server.route(UserEmailRoute)
58 58
         await server.route(UserVerifyActiveRoute)
59
-        await server.route(UserGetAccessRoute)
59
+        await server.route(UserGetSessionRoute)
60 60
         await server.route(UserValidateSessionRoute)
61 61
         await server.route(UserRemoveSessionRoute)
62 62
         await server.route(UserPassword)

+ 1
- 1
backend/lib/routes/user/authentication.js Visa fil

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

+ 4
- 4
backend/lib/routes/user/email.js Visa fil

@@ -25,7 +25,7 @@ module.exports = {
25 25
             const userCredentials = request.payload
26 26
             try {
27 27
                 const emailSent = await userService.emailSent(userCredentials)
28
-                const hashedAccessToken = Object.keys(
28
+                const hashedSessionToken = Object.keys(
29 29
                     userService.activeSessions,
30 30
                 ).find(hashedToken => {
31 31
                     return (
@@ -35,15 +35,15 @@ module.exports = {
35 35
                 })
36 36
                 // Registers the activeSessions object for use by jwt auth strategy
37 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 41
                 return {
42 42
                     ok: true,
43 43
                     handler: pluginConfig.handlerType,
44 44
                     data: {
45 45
                         emailSentSuccessfully: emailSent.wasSuccessfull,
46
-                        hashedAccessToken: hashedAccessToken,
46
+                        hashedSessionToken,
47 47
                     },
48 48
                 }
49 49
             } catch (err) {

backend/lib/routes/user/getaccess.js → backend/lib/routes/user/get-session.js Visa fil

@@ -14,7 +14,7 @@ const pluginConfig = {
14 14
 
15 15
 module.exports = {
16 16
     method: 'POST',
17
-    path: '/getaccess',
17
+    path: '/get-session',
18 18
     options: {
19 19
         ...pluginConfig.docs.get,
20 20
         tags: ['api'],
@@ -26,15 +26,15 @@ module.exports = {
26 26
         handler: async function (request, h) {
27 27
             const { userService } = request.server.services()
28 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 31
             try {
32 32
                 const response = h.response({
33 33
                     ok: true,
34 34
                     handler: pluginConfig.handlerType,
35
-                    data: accessToken,
35
+                    data: sessionToken,
36 36
                 })
37
-                response.header('Authorization', accessToken)
37
+                response.header('Authorization', sessionToken)
38 38
                 return response
39 39
             } catch (err) {
40 40
                 return {

+ 0
- 1
backend/lib/routes/user/login.js Visa fil

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

+ 2
- 2
backend/lib/routes/user/removesession.js Visa fil

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

+ 2
- 2
backend/lib/routes/user/validatesession.js Visa fil

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

+ 2
- 1
backend/lib/routes/user/verifyactivesession.js Visa fil

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

+ 16
- 16
backend/lib/services/user.js Visa fil

@@ -269,8 +269,8 @@ module.exports = class UserService extends Schmervice.Service {
269 269
      * @param {HashedSessionToken} hashedSessionToken
270 270
      * @returns {PayloadFromActiveSessions}
271 271
      */
272
-    validateSession(hashedAccessToken) {
273
-        const userSession = this.activeSessions[hashedAccessToken]
272
+    validateSession(hashedSessionToken) {
273
+        const userSession = this.activeSessions[hashedSessionToken]
274 274
         if (!userSession) {
275 275
             throw new Error(
276 276
                 'hashedSessionToken not in activeSessions registry!',
@@ -279,21 +279,21 @@ module.exports = class UserService extends Schmervice.Service {
279 279
         if (!userSession.emailWasRespondedTo) {
280 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 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 291
         if (!userSession) {
292 292
             throw new Error(
293 293
                 'hashedSessionToken not in activeSessions registry!',
294 294
             )
295 295
         } else {
296
-            delete this.activeSessions[hashedAccessToken]
296
+            delete this.activeSessions[hashedSessionToken]
297 297
         }
298 298
     }
299 299
     /**
@@ -334,23 +334,23 @@ module.exports = class UserService extends Schmervice.Service {
334 334
      * @ returns {Object}
335 335
      */
336 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 341
             return new Error('session already in cache!!')
342 342
         }
343 343
         // Set expiration time for ten minutes from now
344 344
         const duration = 600000
345 345
 
346
-        this.activeSessions[hashedAccessToken] = {
346
+        this.activeSessions[hashedSessionToken] = {
347 347
             email: userCredentials.email,
348 348
             name: userCredentials.name,
349 349
             seeking: userCredentials.seeking,
350
-            accessToken: userCredentials.accessToken,
350
+            sessionToken: userCredentials.sessionToken,
351 351
             expiration: Date.now() + duration,
352 352
             emailWasRespondedTo: false,
353
-            sessionToken: null,
353
+            accessToken: null,
354 354
         }
355 355
 
356 356
         const sendSmtpEmail = {
@@ -362,7 +362,7 @@ module.exports = class UserService extends Schmervice.Service {
362 362
             templateId: 1,
363 363
             params: {
364 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 Visa fil

@@ -44,14 +44,14 @@ export default {
44 44
                 password: userPass.val,
45 45
             })
46 46
             await this.createProfileForNewUser(newUserId, this.responses)
47
-            const accessToken = await this.getAccessToken({
47
+            const sessionToken = await this.getSessionToken({
48 48
                 ...this.answered,
49 49
             })
50 50
             const sessionInfo = await authenticator.sendAuthEmail({
51 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 55
         } catch (err) {
56 56
             // TODO: render an error page in this component displaying which
57 57
             // error occurred and how to reach out to staff
@@ -65,8 +65,8 @@ export default {
65 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 70
                 payload,
71 71
             })
72 72
         },

+ 5
- 3
frontend/src/router/guards.js Visa fil

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

+ 6
- 6
frontend/src/services/auth.service.js Visa fil

@@ -10,17 +10,17 @@ class Authenticator {
10 10
     async verifyAuthSession(hashedToken) {
11 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 19
     async authenticateLoginCredentials(credentials) {
20 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 25
     grabStoredCookie(cookieKey) {
26 26
         const cookies = document.cookie.split('; ').reduce((prev, current) => {

+ 4
- 4
frontend/src/views/HomeView.vue Visa fil

@@ -99,14 +99,14 @@ export default {
99 99
             if (currentProfile.isLoggedIn) {
100 100
                 currentProfile.logout()
101 101
             }
102
-            const hashedAccessToken =
103
-                authenticator.grabStoredCookie('siimee_access')
102
+            const hashedSessionToken =
103
+                authenticator.grabStoredCookie('siimee_session')
104 104
             const removedSession = await authenticator.removeSession(
105
-                hashedAccessToken,
105
+                hashedSessionToken,
106 106
             )
107 107
             if (removedSession.error)
108 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 110
             this.$router.push('/onboarding')
111 111
         },
112 112
         // this can be placed in utils/notification.js

+ 2
- 2
frontend/src/views/LoginView.vue Visa fil

@@ -37,12 +37,12 @@ export default {
37 37
             // emailSentSuccessfully: emailSent.wasSuccessfull,
38 38
             const sessionInfo = await authenticator.sendAuthEmail({
39 39
                 ...credentials.answered,
40
-                accessToken: credentials.jwt,
40
+                sessionToken: credentials.jwt,
41 41
             })
42 42
             if (sessionInfo.emailSentSuccessfully) {
43 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 Visa fil

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

Laddar…
Avbryt
Spara