insomnia/app/ui/components/editors/auth/auth-wrapper.js
Gregory Schier 3f5e7e2e14 First-Party OAuth 2.0 Support (#120)
* Proof of concept authorize call

* Authorize and Refresh endpoints done

* OAuth2 editor started

* Some small fixes

* Set OAuth headers on request

* Started on some OAuth tests

* Updated network logic with new OAuth API

* OAuth forms and refactor flows

* Fix grant type handling

* Moved auth handling out of render pipeline

* Fixed legacy auth header

* Fix vertical center

* Prompt user on auth type change

* Refresh tokens working (I think) and better UI

* Catch same type auth change

* POC refresh token and small refactor

* Better token handling

* LOading state to token refresh

* Show o-auth-2 errors

* Some minor updates
2017-03-23 15:10:42 -07:00

98 lines
2.9 KiB
JavaScript

import React, {PropTypes, PureComponent} from 'react';
import {AUTH_BASIC, AUTH_DIGEST, AUTH_OAUTH_1, AUTH_OAUTH_2} from '../../../../common/constants';
import BasicAuth from './basic-auth';
import OAuth2 from './o-auth-2';
import autobind from 'autobind-decorator';
@autobind
class AuthWrapper extends PureComponent {
renderEditor () {
const {
oAuth2Token,
request,
handleRender,
handleGetRenderContext,
handleUpdateSettingsShowPasswords,
onChange,
showPasswords
} = this.props;
const {authentication} = request;
if (authentication.type === AUTH_BASIC) {
return (
<BasicAuth
authentication={authentication}
handleRender={handleRender}
handleGetRenderContext={handleGetRenderContext}
handleUpdateSettingsShowPasswords={handleUpdateSettingsShowPasswords}
onChange={onChange}
showPasswords={showPasswords}
/>
);
} else if (authentication.type === AUTH_OAUTH_2) {
return (
<OAuth2
oAuth2Token={oAuth2Token}
request={request}
handleRender={handleRender}
handleGetRenderContext={handleGetRenderContext}
handleUpdateSettingsShowPasswords={handleUpdateSettingsShowPasswords}
onChange={onChange}
showPasswords={showPasswords}
/>
);
} else if (authentication.type === AUTH_OAUTH_1) {
return (
<div className="vertically-center text-center">
<p className="pad super-faint text-sm text-center">
<i className="fa fa-commenting" style={{fontSize: '8rem', opacity: 0.3}}/>
<br/><br/>
Don't worry, OAuth 1.0 is coming soon!
</p>
</div>
);
} else if (authentication.type === AUTH_DIGEST) {
return (
<div className="vertically-center text-center">
<p className="pad super-faint text-sm text-center">
<i className="fa fa-commenting" style={{fontSize: '8rem', opacity: 0.3}}/>
<br/><br/>
Don't worry, digest auth is coming soon!
</p>
</div>
);
} else {
return (
<div className="vertically-center text-center">
<p className="pad super-faint text-sm text-center">
<i className="fa fa-unlock-alt" style={{fontSize: '8rem', opacity: 0.3}}/>
<br/><br/>
Select an auth type from above
</p>
</div>
);
}
}
render () {
return (
<div className="pad tall">{this.renderEditor()}</div>
);
}
}
AuthWrapper.propTypes = {
handleRender: PropTypes.func.isRequired,
handleGetRenderContext: PropTypes.func.isRequired,
handleUpdateSettingsShowPasswords: PropTypes.func.isRequired,
onChange: PropTypes.func.isRequired,
request: PropTypes.object.isRequired,
showPasswords: PropTypes.bool.isRequired,
// Optional
oAuth2Token: PropTypes.object
};
export default AuthWrapper;