Skip to content

Commit 9d15aec

Browse files
committed
update
1 parent 7714c65 commit 9d15aec

15 files changed

+1734
-149
lines changed

layouts/default.vue

+2-2
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,10 @@
4343
<v-list>
4444
<v-list-tile avatar>
4545
<v-list-tile-avatar>
46-
<img :src="$store.state.user.photoURL" alt="John">
46+
<img :src="$store.state.user.picture" alt="User Avatar">
4747
</v-list-tile-avatar>
4848
<v-list-tile-content>
49-
<v-list-tile-title v-if="user.displayName">{{user.displayName}}</v-list-tile-title>
49+
<v-list-tile-title v-if="user.name">{{user.name}}</v-list-tile-title>
5050
</v-list-tile-content>
5151
</v-list-tile>
5252
<v-divider></v-divider>

middleware/auth-check.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export default function ({ store, redirect, error }) {
2+
if (!store.state.loggedIn) {
3+
redirect('/login')
4+
}
5+
}

nuxt.config.js

+8-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ module.exports = {
1111
{ rel: 'stylesheet', href: 'https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Material+Icons' }
1212
]
1313
},
14-
mode: 'spa',
14+
// mode: 'spa',
1515
loading: { color: '#3f51b5' },
1616
build: {
1717
extend (config, ctx) {
@@ -37,7 +37,13 @@ module.exports = {
3737
},
3838
plugins: [
3939
{src: '~/plugins/vuetify.js'},
40-
'~/plugins/fireauth.js'
40+
{src: '~/plugins/firebase-client-init.js', ssr: false },
41+
// {src: '~/plugins/firebase-admin-init.js', ssr: true },
42+
{src: '~/plugins/auth-cookie.js', ssr: false }
43+
// '~/plugins/fireauth.js'
44+
],
45+
serverMiddleware: [
46+
'~/serverMiddleware/validateFirebaseIdToken'
4147
],
4248
css: [
4349
{ src: '~/assets/css/main.css', lang: 'css'},

package.json

+8-2
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,14 @@
1111
"generate": "nuxt generate",
1212
"lint": "eslint --ext .js,.vue --ignore-path .gitignore .",
1313
"precommit": "npm run lint",
14-
"fdeploy": "yarn build && firebase deploy"
14+
"fdeploy": "yarn build && firebase deploy",
15+
"heroku-postbuild": "npm run build"
1516
},
1617
"dependencies": {
18+
"cookie-parser": "^1.4.3",
19+
"firebase-admin": "^5.4.2",
1720
"@nuxtjs/pwa": "^1.0.2",
18-
"firebase": "4.5.0",
21+
"firebase": "4.5.1",
1922
"nuxt": "^1.0.0-rc11",
2023
"vuetify": "^0.15.7"
2124
},
@@ -31,5 +34,8 @@
3134
"eslint-plugin-standard": "^3.0.1",
3235
"stylus": "^0.54.5",
3336
"stylus-loader": "^3.0.1"
37+
},
38+
"engines": {
39+
"node": "8.7.0"
3440
}
3541
}

plugins/auth-cookie.js

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import firebase from '~/plugins/firebase-client-init.js'
2+
3+
export default (context) => {
4+
const {store, app, redirect} = context
5+
6+
firebase.auth().addAuthTokenListener(function (idToken) {
7+
8+
var hadSessionCookie = document.cookie.indexOf('__session=') !== -1;
9+
document.cookie = '__session=' + idToken + ';max-age=' + (idToken ? 3600 : 0);
10+
11+
// Not 100% Working yet
12+
// if (!hadSessionCookie && idToken) {
13+
// let user = firebase.auth().currentUser
14+
// console.log('COMMITING FROM AUTH-COOKIE PLUGIN', user);
15+
// store.commit('SET_USER', user)
16+
// store.commit('SET_LOGGED_IN', true)
17+
// store.commit('SET_LOADING', false)
18+
// }
19+
20+
if ((!hadSessionCookie && idToken) || (hadSessionCookie && !idToken)) {
21+
console.log('WINDOW RELOAD ABOUT TO HAPPEN');
22+
window.location.reload(true);
23+
}
24+
});
25+
}

plugins/fireauth.js

+12-12
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
import { auth } from '@/services/fireinit.js'
2-
3-
export default (context) => {
4-
const {store} = context
5-
6-
return new Promise((resolve, reject) => {
7-
auth.onAuthStateChanged(user => {
8-
store.commit('setUser', user)
9-
resolve()
10-
})
11-
})
12-
}
1+
// import { auth } from '@/services/fireinit.js'
2+
//
3+
// export default (context) => {
4+
// const {store} = context
5+
//
6+
// return new Promise((resolve, reject) => {
7+
// auth.onAuthStateChanged(user => {
8+
// store.commit('setUser', user)
9+
// resolve()
10+
// })
11+
// })
12+
// }

plugins/firebase-client-init.js

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import * as firebase from 'firebase'
2+
3+
var config = {
4+
apiKey: "AIzaSyAzdoAjlM9YlQ-gl8VRayCxtJbnrl9qDsw",
5+
authDomain: "nuxt-firebase-auth.firebaseapp.com",
6+
databaseURL: "https://nuxt-firebase-auth.firebaseio.com",
7+
projectId: "nuxt-firebase-auth",
8+
storageBucket: "nuxt-firebase-auth.appspot.com",
9+
messagingSenderId: "316484287956"
10+
}
11+
12+
export default !firebase.apps.length ? firebase.initializeApp(config) : firebase.app()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
// const admin = require('@/plugins/firebase-admin-init.js');
2+
// import admin from '~/plugins/firebase-admin-init.js'
3+
const admin = require('../services/firebase-admin-init.js')
4+
5+
const cookieParser = require('cookie-parser')();
6+
// import { auth } from '@/services/fireinit.js'
7+
8+
module.exports = function (req, res, next) {
9+
// console.log('SERVER MIDDLEWARE FIRING');
10+
getIdTokenFromRequest(req, res).then(idToken => {
11+
if (idToken) {
12+
addDecodedIdTokenToRequest(idToken, req).then(() => {
13+
next();
14+
});
15+
} else {
16+
next();
17+
}
18+
});
19+
}
20+
21+
function getIdTokenFromRequest(req, res) {
22+
if (req.headers.authorization && req.headers.authorization.startsWith('Bearer ')) {
23+
console.log('Found "Authorization" header');
24+
// Read the ID Token from the Authorization header.
25+
return Promise.resolve(req.headers.authorization.split('Bearer ')[1]);
26+
}
27+
return new Promise(function(resolve) {
28+
cookieParser(req, res, () => {
29+
if (req.cookies && req.cookies.__session) {
30+
console.log('Found "__session" cookie');
31+
// Read the ID Token from cookie.
32+
resolve(req.cookies.__session);
33+
} else {
34+
resolve();
35+
}
36+
});
37+
});
38+
}
39+
40+
/**
41+
* Returns a Promise with the Decoded ID Token and adds it to req.user.
42+
*/
43+
function addDecodedIdTokenToRequest(idToken, req) {
44+
return admin.auth().verifyIdToken(idToken).then(decodedIdToken => {
45+
console.log('ID Token correctly decoded', decodedIdToken);
46+
req.user = decodedIdToken;
47+
}).catch(error => {
48+
console.error('Error while verifying Firebase ID token:', error);
49+
});
50+
}
File renamed without changes.

services/firebase-admin-init.js

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
const admin = require('firebase-admin');
2+
const key = require("../serviceAccountKey.json");
3+
4+
5+
module.exports = admin.initializeApp({
6+
credential: admin.credential.cert(key),
7+
databaseURL: `https://${key.project_id}.firebaseio.com`
8+
});

services/fireinit.js

+18-18
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
import * as firebase from 'firebase/app'
2-
import 'firebase/auth'
3-
import 'firebase/database'
4-
5-
var config = {
6-
apiKey: "AIzaSyAzdoAjlM9YlQ-gl8VRayCxtJbnrl9qDsw",
7-
authDomain: "nuxt-firebase-auth.firebaseapp.com",
8-
databaseURL: "https://nuxt-firebase-auth.firebaseio.com",
9-
projectId: "nuxt-firebase-auth",
10-
storageBucket: "nuxt-firebase-auth.appspot.com",
11-
messagingSenderId: "316484287956"
12-
};
13-
14-
!firebase.apps.length ? firebase.initializeApp(config) : ''
15-
export const GoogleProvider = new firebase.auth.GoogleAuthProvider();
16-
export const auth = firebase.auth();
17-
export const DB = firebase.database();
18-
export default firebase
1+
// import * as firebase from 'firebase/app'
2+
// import 'firebase/auth'
3+
// import 'firebase/database'
4+
//
5+
// var config = {
6+
// apiKey: "AIzaSyAzdoAjlM9YlQ-gl8VRayCxtJbnrl9qDsw",
7+
// authDomain: "nuxt-firebase-auth.firebaseapp.com",
8+
// databaseURL: "https://nuxt-firebase-auth.firebaseio.com",
9+
// projectId: "nuxt-firebase-auth",
10+
// storageBucket: "nuxt-firebase-auth.appspot.com",
11+
// messagingSenderId: "316484287956"
12+
// };
13+
//
14+
// let app = !firebase.apps.length ? firebase.initializeApp(config) : firebase.app()
15+
// export const GoogleProvider = new firebase.auth.GoogleAuthProvider();
16+
// export const auth = firebase.auth();
17+
// export const DB = firebase.database();
18+
// export default app

static/sw.js

+8-8
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ importScripts('workbox-sw.prod.v1.3.0.js');
1919
*/
2020
const fileManifest = [
2121
{
22-
"url": "/_nuxt/app.6d410f851671a18a8103.js",
23-
"revision": "35797854b2b72f48531bedae082f4546"
22+
"url": "/_nuxt/app.141d0371cba1c1f37b26.js",
23+
"revision": "588ab8dbaf1007a25d09f3cc31f6f019"
2424
},
2525
{
2626
"url": "/_nuxt/common.872e737efc4cc1dcbd846ecda25d89a6.css",
@@ -31,12 +31,12 @@ const fileManifest = [
3131
"revision": "cfadd787a7f3d5154dab7a868b5bad7f"
3232
},
3333
{
34-
"url": "/_nuxt/layouts/default.8ea74a9395f8cb277e09.js",
35-
"revision": "868a04e26f5bc2b17b7e4c52f48bf2ca"
34+
"url": "/_nuxt/layouts/default.9f9fbcee89ee4198774e.js",
35+
"revision": "789f1d5e8e2d7da3a8e5d1e354bc29cc"
3636
},
3737
{
38-
"url": "/_nuxt/manifest.68f1a4a707ccea95048f.js",
39-
"revision": "1522a5503224ac04803fd79a761bce7a"
38+
"url": "/_nuxt/manifest.b8e97b7624ffa15dd43d.js",
39+
"revision": "2cb820ba3f07751139658f25b2e566b8"
4040
},
4141
{
4242
"url": "/_nuxt/pages/about.c16748884647a978066f.js",
@@ -51,8 +51,8 @@ const fileManifest = [
5151
"revision": "fb644a2377aed8dc58e03f5924f6ba75"
5252
},
5353
{
54-
"url": "/_nuxt/pages/admin/items.469b4bef97d221a1480b.js",
55-
"revision": "b4474aa901f2fdef9edad5d4c8d4b58a"
54+
"url": "/_nuxt/pages/admin/items.327fb9755d778f00b3c2.js",
55+
"revision": "02acd2efb464038c62d4c859e6598499"
5656
},
5757
{
5858
"url": "/_nuxt/pages/admin/settings.fa01f98bb974fc82f8af.js",

store/index.js

+11
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ const createStore = () => {
55
return new Vuex.Store({
66
state: {
77
user: null
8+
// loggedIn: false
89
},
910
getters: {
1011
activeUser: (state, getters) => {
@@ -17,6 +18,16 @@ const createStore = () => {
1718
}
1819
},
1920
actions: {
21+
nuxtServerInit ({ commit }, { req }) {
22+
if (req.user) {
23+
console.log('RAN NUXT-SERVER-INIT');
24+
commit('setUser', req.user)
25+
// commit('SET_LOGGED_IN', true)
26+
// commit('SET_LOADING', false)
27+
} else {
28+
// commit('SET_LOADING', false)
29+
}
30+
},
2031
autoSignIn ({commit}, payload) {
2132
commit('setUser', payload)
2233
},

0 commit comments

Comments
 (0)