Set signer token via #/auth=token={}
This commit is contained in:
parent
373eb6c01b
commit
7ca317912f
@ -25,6 +25,7 @@ import ReactDOM from 'react-dom';
|
|||||||
import injectTapEventPlugin from 'react-tap-event-plugin';
|
import injectTapEventPlugin from 'react-tap-event-plugin';
|
||||||
import { createHashHistory } from 'history';
|
import { createHashHistory } from 'history';
|
||||||
import { Redirect, Router, Route, useRouterHistory } from 'react-router';
|
import { Redirect, Router, Route, useRouterHistory } from 'react-router';
|
||||||
|
import qs from 'querystring';
|
||||||
|
|
||||||
import SecureApi from './secureApi';
|
import SecureApi from './secureApi';
|
||||||
import ContractInstances from './contracts';
|
import ContractInstances from './contracts';
|
||||||
@ -45,6 +46,7 @@ import './index.html';
|
|||||||
|
|
||||||
injectTapEventPlugin();
|
injectTapEventPlugin();
|
||||||
|
|
||||||
|
const AUTH_HASH = '#/auth?';
|
||||||
const parityUrl = process.env.PARITY_URL ||
|
const parityUrl = process.env.PARITY_URL ||
|
||||||
(
|
(
|
||||||
process.env.NODE_ENV === 'production'
|
process.env.NODE_ENV === 'production'
|
||||||
@ -52,7 +54,12 @@ const parityUrl = process.env.PARITY_URL ||
|
|||||||
: '127.0.0.1:8180'
|
: '127.0.0.1:8180'
|
||||||
);
|
);
|
||||||
|
|
||||||
const api = new SecureApi(`ws://${parityUrl}`);
|
let token = null;
|
||||||
|
if (window.location.hash && window.location.hash.indexOf(AUTH_HASH) === 0) {
|
||||||
|
token = qs.parse(window.location.hash.substr(AUTH_HASH.length)).token;
|
||||||
|
}
|
||||||
|
|
||||||
|
const api = new SecureApi(`ws://${parityUrl}`, token);
|
||||||
ContractInstances.create(api);
|
ContractInstances.create(api);
|
||||||
|
|
||||||
const store = initStore(api);
|
const store = initStore(api);
|
||||||
@ -67,6 +74,7 @@ ReactDOM.render(
|
|||||||
<ContextProvider api={ api } muiTheme={ muiTheme } store={ store }>
|
<ContextProvider api={ api } muiTheme={ muiTheme } store={ store }>
|
||||||
<Router className={ styles.reset } history={ routerHistory }>
|
<Router className={ styles.reset } history={ routerHistory }>
|
||||||
<Redirect from='/' to='/accounts' />
|
<Redirect from='/' to='/accounts' />
|
||||||
|
<Redirect from='/auth' to='/accounts' query={ {} } />
|
||||||
<Redirect from='/settings' to='/settings/views' />
|
<Redirect from='/settings' to='/settings/views' />
|
||||||
<Route path='/' component={ Application }>
|
<Route path='/' component={ Application }>
|
||||||
<Route path='accounts' component={ Accounts } />
|
<Route path='accounts' component={ Accounts } />
|
||||||
|
@ -19,23 +19,36 @@ import Api from './api';
|
|||||||
const sysuiToken = window.localStorage.getItem('sysuiToken');
|
const sysuiToken = window.localStorage.getItem('sysuiToken');
|
||||||
|
|
||||||
export default class SecureApi extends Api {
|
export default class SecureApi extends Api {
|
||||||
constructor (url) {
|
constructor (url, _token) {
|
||||||
super(new Api.Transport.Ws(url, sysuiToken));
|
super(new Api.Transport.Ws(url, SecureApi.sanitizeToken(_token || sysuiToken)));
|
||||||
|
|
||||||
|
const token = _token || sysuiToken;
|
||||||
|
|
||||||
this._isConnecting = true;
|
this._isConnecting = true;
|
||||||
this._connectState = sysuiToken === 'initial' ? 1 : 0;
|
this._connectState = token === 'initial' ? 1 : 0;
|
||||||
this._needsToken = false;
|
this._needsToken = false;
|
||||||
this._dappsPort = 8080;
|
this._dappsPort = 8080;
|
||||||
this._dappsInterface = null;
|
this._dappsInterface = null;
|
||||||
this._signerPort = 8180;
|
this._signerPort = 8180;
|
||||||
|
|
||||||
console.log('SecureApi:constructor', sysuiToken);
|
console.log('SecureApi:constructor', token);
|
||||||
|
|
||||||
|
this.storeToken(token);
|
||||||
this._followConnection();
|
this._followConnection();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static sanitizeToken (token) {
|
||||||
|
return token
|
||||||
|
? token.replace(/[^a-zA-Z0-9]/g, '')
|
||||||
|
: null;
|
||||||
|
}
|
||||||
|
|
||||||
|
storeToken (token) {
|
||||||
|
window.localStorage.setItem('sysuiToken', SecureApi.sanitizeToken(token));
|
||||||
|
}
|
||||||
|
|
||||||
setToken = () => {
|
setToken = () => {
|
||||||
window.localStorage.setItem('sysuiToken', this._transport.token);
|
this.storeToken(this._transport.token);
|
||||||
console.log('SecureApi:setToken', this._transport.token);
|
console.log('SecureApi:setToken', this._transport.token);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,7 +128,7 @@ export default class SecureApi extends Api {
|
|||||||
|
|
||||||
updateToken (token, connectState = 0) {
|
updateToken (token, connectState = 0) {
|
||||||
this._connectState = connectState;
|
this._connectState = connectState;
|
||||||
this._transport.updateToken(token.replace(/[^a-zA-Z0-9]/g, ''));
|
this._transport.updateToken(SecureApi.sanitizeToken(token));
|
||||||
this._followConnection();
|
this._followConnection();
|
||||||
console.log('SecureApi:updateToken', this._transport.token, connectState);
|
console.log('SecureApi:updateToken', this._transport.token, connectState);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user