diff --git a/client/homebrew/homebrew.jsx b/client/homebrew/homebrew.jsx index 7c4862373..bf2068798 100644 --- a/client/homebrew/homebrew.jsx +++ b/client/homebrew/homebrew.jsx @@ -11,6 +11,7 @@ const SharePage = require('./pages/sharePage/sharePage.jsx'); const NewPage = require('./pages/newPage/newPage.jsx'); //const ErrorPage = require('./pages/errorPage/errorPage.jsx'); const PrintPage = require('./pages/printPage/printPage.jsx'); +const AccountPage = require('./pages/accountPage/accountPage.jsx'); const UIPage = require('./pages/basePages/uiPage/uiPage.jsx'); const Homebrew = createClass({ @@ -57,8 +58,8 @@ const Homebrew = createClass({ }/> }/> }/> - }/> }/> + }/> }/> diff --git a/client/homebrew/pages/accountPage/accountPage.jsx b/client/homebrew/pages/accountPage/accountPage.jsx new file mode 100644 index 000000000..72925ac70 --- /dev/null +++ b/client/homebrew/pages/accountPage/accountPage.jsx @@ -0,0 +1,56 @@ +const React = require('react'); +const createClass = require('create-react-class'); +const _ = require('lodash'); +const cx = require('classnames'); + +const UIPage = require('../basePages/uiPage/uiPage.jsx'); + +const Nav = require('naturalcrit/nav/nav.jsx'); +const Navbar = require('../../navbar/navbar.jsx'); + +const RecentNavItem = require('../../navbar/recent.navitem.jsx').both; +const Account = require('../../navbar/account.navitem.jsx'); +const NewBrew = require('../../navbar/newbrew.navitem.jsx'); +const HelpNavItem = require('../../navbar/help.navitem.jsx'); + +const AccountPage = createClass({ + displayName : 'AccountPage', + getDefaultProps : function() { + return { + brew : {}, + uiItems : [] + }; + }, + getInitialState : function() { + return { + uiItems : this.props.uiItems + }; + }, + + navItems : function() { + return + + + + + + + ; + }, + + uiItems : function() { + const result = <> +

Account Information

+

Username: {this.props.uiItems.username}

+

Issued: {this.props.uiItems.issued}

+ ; + + return result; + }, + + render : function(){ + return ; + } +}); + +module.exports = AccountPage; diff --git a/server/app.js b/server/app.js index fa3e3bbf7..a623af1bc 100644 --- a/server/app.js +++ b/server/app.js @@ -272,11 +272,42 @@ app.get('/print/:id', asyncHandler(async (req, res, next)=>{ return next(); })); -//UI Page -app.get('/ui', asyncHandler(async (req, res, next)=>{ - const brew = { - title : 'UI PAGE' - }; +//Account Page +app.get('/ui/account', asyncHandler(async (req, res, next)=>{ + const brew = {}; + brew.title = 'ACCOUNT'; + + let auth; + let files; + if(req.account) { + if(req.account.googleId) { + try { + auth = await GoogleActions.authCheck(req.account, res); + } catch (e) { + auth = undefined; + console.log('Google auth check failed!'); + console.log(e); + } + if(auth.credentials.access_token) { + try { + files = await GoogleActions.listGoogleBrews(auth); + } catch (e) { + files = undefined; + console.log('List Google files failed!'); + console.log(e); + } + } + } + + brew.uiItems = { + username : req.account.username, + issued : req.account.issued, + googleId : Boolean(req.account.googleId), + authCheck : Boolean(req.account.googleId && auth.credentials.access_token), + fileCount : files?.length + }; + } + req.brew = brew; return next(); })); @@ -298,6 +329,7 @@ if(isLocalEnvironment){ //Render the page const templateFn = require('./../client/template.js'); + app.use((req, res)=>{ // Create configuration object const configuration = {