Skip to content

Commit 045bb6c

Browse files
committed
FIX: Login System
1 parent d64a549 commit 045bb6c

File tree

8 files changed

+706
-112
lines changed

8 files changed

+706
-112
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,3 +88,6 @@ sw.*
8888

8989
# Vim swap files
9090
*.swp
91+
92+
.runtimeconfig.json
93+
key.json

nuxt.config.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,10 @@ module.exports = {
6363
src: '@/plugins/persistedstate.js',
6464
ssr: false,
6565
},
66+
{
67+
src: '@/plugins/firebase-admin.js',
68+
ssr: true,
69+
},
6670
],
6771
/*
6872
** Nuxt.js dev-modules

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
"dayjs": "^1.8.26",
3636
"express": "^4.17.1",
3737
"firebase": "^7.14.2",
38+
"firebase-admin": "^8.12.0",
3839
"js-cookie": "^2.2.1",
3940
"jwt-decode": "^2.2.0",
4041
"lodash.clonedeep": "^4.5.0",

src/layouts/ClassLayout.vue

Lines changed: 0 additions & 81 deletions
This file was deleted.

src/middleware/authenticated.js

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,19 @@
1-
export default function ({ store, redirect }) {
2-
if (!store.getters['modules/user/isAuthenticated']) {
3-
return redirect('/account/login')
1+
export default ({ req, redirect }) => {
2+
if (process.server) {
3+
const admin = require('firebase-admin')
4+
const cookieparser = require('cookieparser')
5+
if (req.headers.cookie) {
6+
const token = cookieparser.parse(req.headers.cookie).__session
7+
admin
8+
.auth()
9+
.verifyIdToken(token)
10+
.then(() => {})
11+
.catch((error) => {
12+
console.error(error)
13+
redirect('/account/login')
14+
})
15+
} else {
16+
redirect('/account/login')
17+
}
418
}
519
}

src/plugins/firebase-admin.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// eslint-disable-next-line import/no-mutable-exports
2+
let admin = null
3+
if (process.server) {
4+
admin = require('firebase-admin')
5+
if (!admin.apps.length) {
6+
admin.initializeApp({
7+
credential: admin.credential.applicationDefault(),
8+
databaseURL: 'https://studyathome.firebaseio.com',
9+
})
10+
}
11+
}
12+
13+
// eslint-disable-next-line no-undef
14+
export default admin

src/store/modules/user.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,15 @@ export const actions = {
3232
avatar: user.photoURL,
3333
uid: user.uid,
3434
}
35-
Cookies.set('access_token', token) // saving token in cookie for server rendering
35+
Cookies.set('__session', token) // saving token in cookie for server rendering
3636
await dispatch('setUserData', userInfo)
3737
await dispatch('setUid', firebase.auth().currentUser.uid)
3838
},
3939

4040
async logout({ commit }) {
4141
await firebase.auth().signOut()
4242

43-
Cookies.remove('access_token')
43+
Cookies.remove('__session')
4444
commit('setUserData', null)
4545
commit('setUid', null)
4646
},

0 commit comments

Comments
 (0)