Merge branch 'feature/http-auth' into dev

Close #56
This commit is contained in:
Yuya Ochiai
2016-04-27 21:52:36 +09:00
7 changed files with 137 additions and 22 deletions

View File

@@ -13,8 +13,11 @@ const Badge = ReactBootstrap.Badge;
const ListGroup = ReactBootstrap.ListGroup;
const ListGroupItem = ReactBootstrap.ListGroupItem;
const LoginModal = require('./components/loginModal.jsx');
const electron = require('electron');
const remote = electron.remote;
const ipcRenderer = electron.ipcRenderer;
const osLocale = require('os-locale');
const fs = require('fs');
@@ -32,11 +35,26 @@ var MainPage = React.createClass({
unreadCounts: new Array(this.props.teams.length),
mentionCounts: new Array(this.props.teams.length),
unreadAtActive: new Array(this.props.teams.length),
mentionAtActiveCounts: new Array(this.props.teams.length)
mentionAtActiveCounts: new Array(this.props.teams.length),
loginQueue: []
};
},
componentDidMount: function() {
var thisObj = this;
ipcRenderer.on('login-request', function(event, request, authInfo) {
thisObj.setState({
loginRequired: true
});
const loginQueue = thisObj.state.loginQueue;
loginQueue.push({
request: request,
authInfo: authInfo
});
thisObj.setState({
loginQueue: loginQueue
});
});
var focusListener = function() {
var webview = document.getElementById('mattermostView' + thisObj.state.key);
webview.focus();
@@ -124,6 +142,18 @@ var MainPage = React.createClass({
visibility: visibility
};
},
handleLogin: function(request, username, password) {
ipcRenderer.send('login-credentials', request, username, password);
const loginQueue = this.state.loginQueue;
loginQueue.shift();
this.setState(loginQueue);
},
handleLoginCancel: function() {
const loginQueue = this.state.loginQueue;
loginQueue.shift();
this.setState(loginQueue);
},
render: function() {
var thisObj = this;
@@ -151,11 +181,25 @@ var MainPage = React.createClass({
var views_row = (<Row>
{ views }
</Row>);
var request = null;
var authServerURL = null;
var authInfo = null;
if (this.state.loginQueue.length !== 0) {
request = this.state.loginQueue[0].request;
const tmp_url = url.parse(this.state.loginQueue[0].request.url);
authServerURL = `${tmp_url.protocol}//${tmp_url.host}`;
authInfo = this.state.loginQueue[0].authInfo;
}
return (
<Grid fluid>
{ tabs_row }
{ views_row }
</Grid>
<div>
<LoginModal show={ this.state.loginQueue.length !== 0 } request={ request } authInfo={ authInfo } authServerURL={ authServerURL } onLogin={ this.handleLogin }
onCancel={ this.handleLoginCancel }></LoginModal>
<Grid fluid>
{ tabs_row }
{ views_row }
</Grid>
</div>
);
}
});