From cd0b07b3adb36fb5ec098f9e511ab45d774fee7b Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Tue, 30 Jan 2018 12:41:01 -0500 Subject: Move to Prisma Backend --- frontend/components/LoginAuth0.js | 76 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 frontend/components/LoginAuth0.js (limited to 'frontend/components/LoginAuth0.js') diff --git a/frontend/components/LoginAuth0.js b/frontend/components/LoginAuth0.js new file mode 100644 index 0000000..b55ae4a --- /dev/null +++ b/frontend/components/LoginAuth0.js @@ -0,0 +1,76 @@ +import { Component, PropTypes } from 'react'; +import Auth0Lock from 'auth0-lock'; +import { graphql, compose } from 'react-apollo'; +import { CURRENT_USER_QUERY } from '../queries/index'; + +class LoginAuth0 extends Component { + constructor(props) { + super(props); + if (typeof window === 'undefined') return; + const redirectUrl = `http://localhost:3000/signup`; + this._lock = new Auth0Lock('r6D64Waoq7roAnv8GT04dnn1tpq9PAqu', 'wesbos.auth0.com', { + auth: { + redirect: false, + }, + }); + } + + componentDidMount() { + this._lock.on('authenticated', authResult => { + console.log(authResult); + window.localStorage.setItem('auth0IdToken', authResult.idToken); + console.log('Im baaaack!'); + this.props.currentUserQuery.refetch(); + }); + + this._lock.on('authorization_error', err => { + console.error(err); + }); + + // refech on page load because of the server render + this.props.currentUserQuery.refetch(); + } + + logout = () => { + window.localStorage.removeItem('auth0IdToken'); + this.props.currentUserQuery.refetch(); + }; + + createUser = async () => { + const variables = { + idToken: window.localStorage.getItem('auth0IdToken'), + emailAddress: 'wesbos@gmail.com', + name: 'Hardcoded Wes', + }; + // TODO - make a createUser function + this.props + .createUser({ variables }) + .then(response => { + // this.props.currentUserQuery.refetch(); + this.props.history.replace('/'); + }) + .catch(e => { + console.error(e); + this.props.history.replace('/'); + }); + }; + + _showLogin = () => { + this._lock.show(); + }; + + render() { + const { user } = this.props.currentUserQuery; + if (user) { + return ; + } + return ( +
+ +
+ ); + } +} + +const userEnhancer = graphql(CURRENT_USER_QUERY, { name: 'currentUserQuery' }); +export default compose(userEnhancer)(LoginAuth0); -- cgit v1.3