Parcourir la source

:bug: Changes to address 'eternal cookies' bug

tags/0.0.3^2
tomit4 il y a 3 ans
Parent
révision
c9d70e6fda
1 fichiers modifiés avec 26 ajouts et 24 suppressions
  1. 26
    24
      frontend/src/views/OnboardingView.vue

+ 26
- 24
frontend/src/views/OnboardingView.vue Voir le fichier

71
 
71
 
72
         if (document.cookie.length) {
72
         if (document.cookie.length) {
73
             // TODO: Heavy Refactor needed, obvious code smells
73
             // TODO: Heavy Refactor needed, obvious code smells
74
-            // BUG: NEEDS BROWSER REFRESH TO SEE UPDATED COOKIES
74
+            // BUG: NEEDS BROWSER REFRESH AFTER VERIFYING EMAIL AND REDIRECT BACK TO ONBOARDING
75
+            // BUG: CURRENT IMPLEMENTATION HAS COOKIES THAT NEVER EXPIRE
75
             const siimeeAnswered = this.grabCookie('siimee_answered')
76
             const siimeeAnswered = this.grabCookie('siimee_answered')
76
             const myCurrentStep = this.grabCookie('siimee_current_step')
77
             const myCurrentStep = this.grabCookie('siimee_current_step')
77
-            console.log('myCurrentStep :=>', myCurrentStep)
78
+            const myCurrentAnswers = this.grabCookie('siimee_cache_answered')
79
+            const myCurrentResponses = this.grabCookie('siimee_cache_responses')
80
+            this.sessionToken = this.grabCookie('siimee_session') || ''
81
+            // TODO: START REFACTOR HERE...
78
             if (siimeeAnswered) {
82
             if (siimeeAnswered) {
79
                 const siimeeAnswers = JSON.parse(siimeeAnswered)
83
                 const siimeeAnswers = JSON.parse(siimeeAnswered)
80
-                this.sessionToken = this.grabCookie('siimee_session')
81
                 const sessionTokenIsValid =
84
                 const sessionTokenIsValid =
82
                     await this.authenticator.validateJwt(this.sessionToken)
85
                     await this.authenticator.validateJwt(this.sessionToken)
83
                 this.accessToken = this.grabCookie('siimee_access')
86
                 this.accessToken = this.grabCookie('siimee_access')
88
                         seeking: siimeeAnswers.seeking,
91
                         seeking: siimeeAnswers.seeking,
89
                     }
92
                     }
90
                     this.currentProfileId = siimeeAnswers.profile_id
93
                     this.currentProfileId = siimeeAnswers.profile_id
91
-                    this.currentStep = 6
92
                     this.responses = [
94
                     this.responses = [
93
                         { response_key_id: 8, val: siimeeAnswers.email },
95
                         { response_key_id: 8, val: siimeeAnswers.email },
94
                         { response_key_id: 7, val: siimeeAnswers.name },
96
                         { response_key_id: 7, val: siimeeAnswers.name },
102
                         this.responses,
104
                         this.responses,
103
                     )}; max-age=600 ; path=/onboarding ; secure`
105
                     )}; max-age=600 ; path=/onboarding ; secure`
104
                     document.cookie = 'siimee_answered='
106
                     document.cookie = 'siimee_answered='
107
+                    this.currentStep = 6
105
                     this.goToStep(this.currentStep)
108
                     this.goToStep(this.currentStep)
106
                 }
109
                 }
107
             } else if (myCurrentStep) {
110
             } else if (myCurrentStep) {
108
-                const myCurrentAnswers = this.grabCookie(
109
-                    'siimee_cache_answered',
110
-                )
111
-                const myCurrentResponses = this.grabCookie(
112
-                    'siimee_cache_responses',
113
-                )
114
                 this.answered = JSON.parse(myCurrentAnswers)
111
                 this.answered = JSON.parse(myCurrentAnswers)
115
                 this.responses = JSON.parse(myCurrentResponses)
112
                 this.responses = JSON.parse(myCurrentResponses)
116
                 this.currentStep = myCurrentStep
113
                 this.currentStep = myCurrentStep
117
                 this.goToStep(Number(myCurrentStep) + 1)
114
                 this.goToStep(Number(myCurrentStep) + 1)
118
             } else {
115
             } else {
119
-                this.goToStep(0)
116
+                this.currentStep = 0
117
+                this.goToStep(this.currentStep)
120
             }
118
             }
121
         }
119
         }
122
     },
120
     },
124
         onSubmit() {
122
         onSubmit() {
125
             console.log(JSON.stringify(this.answered))
123
             console.log(JSON.stringify(this.answered))
126
         },
124
         },
127
-        async goToStep(num) {
125
+        async goToStep(num, maxAge) {
126
+            maxAge = 600 // temp measure
128
             document.cookie = `siimee_current_step=${Number(
127
             document.cookie = `siimee_current_step=${Number(
129
                 this.currentStep,
128
                 this.currentStep,
130
-            )}; max-age=600 ; path=/onboarding ; secure`
129
+            )}; max-age=${maxAge} ; path=/onboarding ; secure`
131
             document.cookie = `siimee_cache_answered=${JSON.stringify(
130
             document.cookie = `siimee_cache_answered=${JSON.stringify(
132
                 this.answered,
131
                 this.answered,
133
-            )}; max-age=600 ; path=/onboarding ; secure`
132
+            )}; max-age=${maxAge} ; path=/onboarding ; secure`
134
             document.cookie = `siimee_cache_responses=${JSON.stringify(
133
             document.cookie = `siimee_cache_responses=${JSON.stringify(
135
                 this.responses,
134
                 this.responses,
136
-            )}; max-age=600 ; path=/onboarding ; secure`
135
+            )}; max-age=${maxAge} ; path=/onboarding ; secure`
137
 
136
 
138
             if (num > 6) {
137
             if (num > 6) {
139
                 this.validateAccessToken()
138
                 this.validateAccessToken()
145
             const validatedAccessToken = await this.authenticator.validateJwt(
144
             const validatedAccessToken = await this.authenticator.validateJwt(
146
                 this.accessToken,
145
                 this.accessToken,
147
             )
146
             )
148
-            if (!validatedAccessToken.isValid) {
147
+            if (!validatedAccessToken || !validatedAccessToken.isValid) {
149
                 const sessionTokenIsValid = await this.validateSessionToken()
148
                 const sessionTokenIsValid = await this.validateSessionToken()
150
                 if (!sessionTokenIsValid) {
149
                 if (!sessionTokenIsValid) {
151
                     this.goToStep(0)
150
                     this.goToStep(0)
156
             const validatedSessionToken = await this.authenticator.validateJwt(
155
             const validatedSessionToken = await this.authenticator.validateJwt(
157
                 this.sessionToken,
156
                 this.sessionToken,
158
             )
157
             )
159
-            if (validatedSessionToken.isValid) {
158
+            if (!validatedSessionToken || validatedSessionToken.isValid) {
160
                 this.accessToken = await this.authenticator.generateJwt({
159
                 this.accessToken = await this.authenticator.generateJwt({
161
                     ...this.answered,
160
                     ...this.answered,
162
                     expiration: 60 * 3,
161
                     expiration: 60 * 3,
165
             } else return false
164
             } else return false
166
         },
165
         },
167
         grabCookie(cookieKey) {
166
         grabCookie(cookieKey) {
168
-            const cookieString = document.cookie
169
-            const cookies = cookieString.split('; ').reduce((prev, current) => {
170
-                const [name, ...value] = current.split('=')
171
-                prev[name] = value.join('=')
172
-                return prev
173
-            }, {})
174
-            return cookieKey in cookies ? cookies[`${cookieKey}`] : undefined
167
+            const cookies = document.cookie
168
+                .split('; ')
169
+                .reduce((prev, current) => {
170
+                    const [name, ...value] = current.split('=')
171
+                    prev[name] = value.join('=')
172
+                    return prev
173
+                }, {})
174
+            const cookieVal =
175
+                cookieKey in cookies ? cookies[`${cookieKey}`] : undefined
176
+            return cookieVal
175
         },
177
         },
176
         async updateAnswers(payload) {
178
         async updateAnswers(payload) {
177
             if (payload) {
179
             if (payload) {

Chargement…
Annuler
Enregistrer