From 82ba85f7d24e0c71c97881d02f82ec9c16d41641 Mon Sep 17 00:00:00 2001 From: Maxim Khailo Date: Mon, 15 May 2017 15:23:08 -0700 Subject: [PATCH] Add login support for the api docs. --- templates/assets/firebase-check-login.js | 38 ++++++++++++++++++++++++ templates/assets/firebase-init.js | 10 +++++++ templates/assets/firebase-login.js | 16 ++++++++++ templates/triple.jade | 8 ++++- 4 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 templates/assets/firebase-check-login.js create mode 100644 templates/assets/firebase-init.js create mode 100644 templates/assets/firebase-login.js diff --git a/templates/assets/firebase-check-login.js b/templates/assets/firebase-check-login.js new file mode 100644 index 0000000..fa332e5 --- /dev/null +++ b/templates/assets/firebase-check-login.js @@ -0,0 +1,38 @@ +initApp = function() { + firebase.auth().onAuthStateChanged(function(user, o, i) { + if (user) { + if (window.location.pathname == '/' || window.location.pathname == '/index.html') + window.location.href='/home.html' + // console.log(user) + // var displayName = user.displayName + // var email = user.email + // var emailVerified = user.emailVerified + // var photoURL = user.photoURL + // var uid = user.uid + // var providerData = user.providerData + // user.getToken().then(function(accessToken) { + // document.getElementById('sign-in-status').textContent = 'Signed in' + // document.getElementById('sign-in').textContent = 'Sign out' + // document.getElementById('account-details').textContent = JSON.stringify({ + // displayName: displayName, + // email: email, + // emailVerified: emailVerified, + // photoURL: photoURL, + // uid: uid, + // accessToken: accessToken, + // providerData: providerData + // }, null, ' ') + // }) + } else if(window.location.pathname != '/index.html' && window.location.pathname != '/'){ + // User is signed out. + // console.log('redirect to /') + window.location.href='/index.html' + } + }, function(error) { + console.log(error) + }) +} + +window.addEventListener('load', function() { + initApp() +}) diff --git a/templates/assets/firebase-init.js b/templates/assets/firebase-init.js new file mode 100644 index 0000000..05c3da0 --- /dev/null +++ b/templates/assets/firebase-init.js @@ -0,0 +1,10 @@ +// Initialize Firebase +var config = { + apiKey: "AIzaSyA7PHmaT1CsQOqJu26kfxJRcn-GBueITj8", + authDomain: "fox-developers.firebaseapp.com", + databaseURL: "https://fox-developers.firebaseio.com", + projectId: "fox-developers", + storageBucket: "fox-developers.appspot.com", + messagingSenderId: "1016773799220" +}; +firebase.initializeApp(config); diff --git a/templates/assets/firebase-login.js b/templates/assets/firebase-login.js new file mode 100644 index 0000000..5fa4ea9 --- /dev/null +++ b/templates/assets/firebase-login.js @@ -0,0 +1,16 @@ +// FirebaseUI config. +var uiConfig = { + signInSuccessUrl: '/home.html', + signInOptions: [ + // Leave the lines as is for the providers you want to offer your users. + firebase.auth.GoogleAuthProvider.PROVIDER_ID, + firebase.auth.EmailAuthProvider.PROVIDER_ID + ], + // Terms of service url. + tosUrl: '/home.html' +}; + +// Initialize the FirebaseUI Widget using Firebase. +var ui = new firebaseui.auth.AuthUI(firebase.auth()); +// The start method will wait until the DOM is loaded. +ui.start('#firebaseui-auth-container', uiConfig); diff --git a/templates/triple.jade b/templates/triple.jade index 862990a..fb739ce 100644 --- a/templates/triple.jade +++ b/templates/triple.jade @@ -7,8 +7,15 @@ html meta(charset="utf-8") title= self.api.name || 'API Documentation' link(rel="stylesheet", href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css") + script(src="https://www.gstatic.com/firebasejs/3.9.0/firebase.js") + script(src="https://cdn.firebase.com/libs/firebaseui/1.0.1/firebaseui.js") + link(rel="stylesheet", href="https://cdn.firebase.com/libs/firebaseui/1.0.1/firebaseui.css") + script(src="/assets/firebase-init.js") + script(src="/assets/firebase-login.js") + script(src="/assets/firebase-check-login.js") style!= self.css body.preload + #nav-background div.container-fluid.triple .row @@ -28,7 +35,6 @@ html |  on #{self.date().format('DD MMM YYYY')} script: include scripts.js - if self.livePreview script(src="/socket.io/socket.io.js") script.