cabana: login with github on modals

main
Andy Haden 2017-06-30 21:27:04 -07:00
parent ee15e2dd38
commit 6649c61c40
6 changed files with 25 additions and 14 deletions

View File

@ -2,8 +2,8 @@ from flask import Flask, request, redirect
import requests import requests
import json import json
CLIENT_ID = '4b43250e7499a97d62a5' CLIENT_ID = 'f1e42d14f45491f9ca34'
CLIENT_SECRET = '65dbd43f3e298e024a7aff85b2a9ed261ffc9fcf' CLIENT_SECRET = 'f50f7a6dd6b0364b0761f35367f0be7027e7caa1'
OAUTH_STATES = [] OAUTH_STATES = []
app = Flask(__name__) app = Flask(__name__)
@ -16,9 +16,6 @@ def auth_state():
@app.route('/callback') @app.route('/callback')
def callback(): def callback():
CLIENT_ID = '4b43250e7499a97d62a5'
CLIENT_SECRET = '65dbd43f3e298e024a7aff85b2a9ed261ffc9fcf'
code = request.args.get('code') code = request.args.get('code')
state = request.args.get('state') state = request.args.get('state')
@ -34,7 +31,7 @@ def callback():
route = json.loads(state)['route'] route = json.loads(state)['route']
return redirect('https://community.comma.ai/cabana/?route={}&gh_access_token={}'.format(route, oauth_resp['access_token'])) return redirect('http://127.0.0.1:3000/?route={}&gh_access_token={}'.format(route, oauth_resp['access_token']))
if __name__ == '__main__': if __name__ == '__main__':
app.run(port=1235) app.run(port=1235)

View File

@ -322,6 +322,10 @@ export default class CanExplorer extends Component {
this.setState({selectedMessage: null}); this.setState({selectedMessage: null});
} }
loginWithGithub() {
return <a href={GithubAuth.authorizeUrl(this.state.route.fullname || '')}>Log in with Github</a>
}
render() { render() {
return (<div className={css(Styles.root)}> return (<div className={css(Styles.root)}>
{this.state.isLoading ? {this.state.isLoading ?
@ -347,6 +351,7 @@ export default class CanExplorer extends Component {
seekTime={this.state.seekTime} seekTime={this.state.seekTime}
maxByteStateChangeCount={this.state.maxByteStateChangeCount} maxByteStateChangeCount={this.state.maxByteStateChangeCount}
githubAuthToken={this.props.githubAuthToken} githubAuthToken={this.props.githubAuthToken}
loginWithGithub={this.loginWithGithub()}
/> />
<div className={css(Styles.right)}> <div className={css(Styles.right)}>
{this.state.route.url ? {this.state.route.url ?
@ -372,13 +377,16 @@ export default class CanExplorer extends Component {
onDbcSelected={this.onDbcSelected} onDbcSelected={this.onDbcSelected}
onCancel={this.hideLoadDbc} onCancel={this.hideLoadDbc}
openDbcClient={this.openDbcClient} openDbcClient={this.openDbcClient}
loginWithGithub={this.loginWithGithub()}
/> : null} /> : null}
{this.state.showSaveDbc ? <SaveDbcModal {this.state.showSaveDbc ? <SaveDbcModal
dbc={this.state.dbc} dbc={this.state.dbc}
sourceDbcFilename={this.state.dbcFilename} sourceDbcFilename={this.state.dbcFilename}
onDbcSaved={this.onDbcSaved} onDbcSaved={this.onDbcSaved}
onCancel={this.hideSaveDbc} onCancel={this.hideSaveDbc}
openDbcClient={this.openDbcClient} /> : null} openDbcClient={this.openDbcClient}
hasGithubAuth={this.props.githubAuthToken !== null}
loginWithGithub={this.loginWithGithub()} /> : null}
{this.state.showEditMessageModal ? {this.state.showEditMessageModal ?
<EditMessageModal <EditMessageModal
onCancel={this.hideEditMessageModal} onCancel={this.hideEditMessageModal}

View File

@ -14,7 +14,8 @@ export default class LoadDbcModal extends Component {
static propTypes = { static propTypes = {
onCancel: PropTypes.func.isRequired, onCancel: PropTypes.func.isRequired,
onDbcSelected: PropTypes.func.isRequired, onDbcSelected: PropTypes.func.isRequired,
openDbcClient: PropTypes.instanceOf(OpenDbc).isRequired openDbcClient: PropTypes.instanceOf(OpenDbc).isRequired,
loginWithGithub: PropTypes.element.isRequired,
}; };
constructor(props) { constructor(props) {
@ -45,7 +46,7 @@ export default class LoadDbcModal extends Component {
openDbcClient={this.props.openDbcClient} />); openDbcClient={this.props.openDbcClient} />);
} else if(tab === 'GitHub') { } else if(tab === 'GitHub') {
if(!this.props.openDbcClient.hasAuth()) { if(!this.props.openDbcClient.hasAuth()) {
return (<div>Need to auth</div>); return (<div>{this.props.loginWithGithub}</div>);
} else if(this.state.userOpenDbcRepo === null) { } else if(this.state.userOpenDbcRepo === null) {
return (<div>Fork it</div>); return (<div>Fork it</div>);
} else { } else {

View File

@ -14,7 +14,9 @@ export default class SaveDbcModal extends Component {
sourceDbcFilename: PropTypes.string.isRequired, sourceDbcFilename: PropTypes.string.isRequired,
onCancel: PropTypes.func.isRequired, onCancel: PropTypes.func.isRequired,
onDbcSaved: PropTypes.func.isRequired, onDbcSaved: PropTypes.func.isRequired,
openDbcClient: PropTypes.instanceOf(OpenDbc).isRequired openDbcClient: PropTypes.instanceOf(OpenDbc).isRequired,
hasGithubAuth: PropTypes.bool.isRequired,
loginWithGithub: PropTypes.element.isRequired
}; };
constructor(props) { constructor(props) {
@ -84,9 +86,11 @@ export default class SaveDbcModal extends Component {
let content; let content;
if(openDbcFork !== null) { if(openDbcFork !== null) {
content = <p>Done! {openDbcFork}</p>; content = <p>Done! {openDbcFork}</p>;
} else { } else if(this.props.hasGithubAuth) {
content = <p className={css(Styles.pointer, Styles.forkOpenDbc)} content = <p className={css(Styles.pointer, Styles.forkOpenDbc)}
onClick={this.forkOpenDbcAndWait}>Fork OpenDBC</p>; onClick={this.forkOpenDbcAndWait}>Fork OpenDBC</p>;
} else {
content = this.props.loginWithGithub;
} }
return (<div className={css(Styles.step, (openDbcFork !== null ? Styles.stepDone : null))}> return (<div className={css(Styles.step, (openDbcFork !== null ? Styles.stepDone : null))}>
{openDbcFork !== null ? <p>Fork OpenDBC</p> : null} {openDbcFork !== null ? <p>Fork OpenDBC</p> : null}

View File

@ -26,7 +26,8 @@ export default class Meta extends Component {
route: PropTypes.object, route: PropTypes.object,
partsLoaded: PropTypes.number, partsLoaded: PropTypes.number,
currentParts: PropTypes.array, currentParts: PropTypes.array,
seekTime: PropTypes.number seekTime: PropTypes.number,
loginWithGithub: PropTypes.element,
}; };
constructor(props) { constructor(props) {
@ -296,7 +297,7 @@ export default class Meta extends Component {
{this.props.githubAuthToken ? {this.props.githubAuthToken ?
<p className={css(Styles.githubAuth)}>GitHub Authenticated</p> <p className={css(Styles.githubAuth)}>GitHub Authenticated</p>
: :
<a href={GithubAuth.authorizeUrl(this.props.route.fullname || '')}>Log in with Github</a> this.props.loginWithGithub
} }
</div> </div>
<div> <div>

View File

@ -2,7 +2,7 @@ import {getUrlParameter} from './utils/url';
const ENV = process.env.NODE_ENV === 'production' ? 'prod' : 'debug'; const ENV = process.env.NODE_ENV === 'production' ? 'prod' : 'debug';
const ENV_GITHUB_CLIENT_ID = {debug: '4b43250e7499a97d62a5', const ENV_GITHUB_CLIENT_ID = {debug: 'f1e42d14f45491f9ca34',
prod: '4b43250e7499a97d62a5'} prod: '4b43250e7499a97d62a5'}
export const GITHUB_CLIENT_ID = ENV_GITHUB_CLIENT_ID[ENV]; export const GITHUB_CLIENT_ID = ENV_GITHUB_CLIENT_ID[ENV];