diff --git a/client/src/actions/session-actions.js b/client/src/actions/session-actions.js index 90aa07ae..08c95be8 100644 --- a/client/src/actions/session-actions.js +++ b/client/src/actions/session-actions.js @@ -12,7 +12,7 @@ export default { path: '/user/login', data: loginData }).then((result) => { - store.dispatch(this.getUserData(result.data.userId, result.data.token)); + store.dispatch(this.getUserData(result.data.userId, result.data.token, result.data.staff)); return result; }) @@ -49,7 +49,7 @@ export default { }; }, - getUserData(userId, token) { + getUserData(userId, token, staff) { let data = {}; if (userId && token) { @@ -62,7 +62,7 @@ export default { return { type: 'USER_DATA', payload: API.call({ - path: '/user/get', + path: (staff) ? '/staff/get' : '/user/get', data: data }) } diff --git a/client/src/app/App.js b/client/src/app/App.js index 00f2efdf..90197430 100644 --- a/client/src/app/App.js +++ b/client/src/app/App.js @@ -44,7 +44,9 @@ class App extends React.Component { const validations = { languageChanged: props.config.language !== this.props.config.language, loggedIn: !_.includes(props.location.pathname, '/dashboard') && props.session.logged, - loggedOut: _.includes(props.location.pathname, '/dashboard') && !props.session.logged + loggedOut: _.includes(props.location.pathname, '/dashboard') && !props.session.logged, + loggedInStaff: !_.includes(props.location.pathname, '/admin/panel') && props.session.staff, + loggedOutStaff: _.includes(props.location.pathname, '/admin/panel') && !props.session.logged }; if (validations.languageChanged) { @@ -55,8 +57,14 @@ class App extends React.Component { browserHistory.push('/'); } - if (validations.loggedIn) { + if (validations.loggedOutStaff) { + browserHistory.push('/admin'); + } + + if (validations.loggedIn && !props.session.staff) { browserHistory.push('/dashboard'); + } else if(validations.loggedInStaff) { + browserHistory.push('/admin/panel'); } } } diff --git a/client/src/app/admin/admin-login-page.js b/client/src/app/admin/admin-login-page.js index e4727f21..12d74dc5 100644 --- a/client/src/app/admin/admin-login-page.js +++ b/client/src/app/admin/admin-login-page.js @@ -1,23 +1,25 @@ import React from 'react'; +import _ from 'lodash'; +import {connect} from 'react-redux'; import i18n from 'lib-app/i18n'; -import API from 'lib-app/api-call'; +import SessionActions from 'actions/session-actions'; import Form from 'core-components/form'; import FormField from 'core-components/form-field'; import SubmitButton from 'core-components/submit-button'; class AdminLoginPage extends React.Component { - render(){ + render() { return (
OpenSupports Admin Panel
-
+ - - {i18n('LOG_IN')} + + {i18n('LOG_IN')}
@@ -26,8 +28,14 @@ class AdminLoginPage extends React.Component { } onSubmit(formState) { - + this.props.dispatch(SessionActions.login(_.extend({}, formState, { + staff: true + }))); } } -export default AdminLoginPage; \ No newline at end of file +export default connect((store) => { + return { + session: store.session + }; +})(AdminLoginPage); diff --git a/client/src/data/fixtures/staff-fixtures.js b/client/src/data/fixtures/staff-fixtures.js index c4f0a578..ea6afbcd 100644 --- a/client/src/data/fixtures/staff-fixtures.js +++ b/client/src/data/fixtures/staff-fixtures.js @@ -10,6 +10,7 @@ module.exports = [ email: 'staff@opensupports.com', profilePic: 'http://i65.tinypic.com/9bep95.jpg', level: 1, + staff: true, departments: [ {id: 1, name: 'Sales Support'}, {id: 2, name: 'Technical Issues'}, diff --git a/client/src/reducers/session-reducer.js b/client/src/reducers/session-reducer.js index 877bb590..92251dce 100644 --- a/client/src/reducers/session-reducer.js +++ b/client/src/reducers/session-reducer.js @@ -41,7 +41,8 @@ class SessionReducer extends Reducer { return _.extend({}, state, { logged: true, pending: false, - failed: false + failed: false, + staff: payload.data.staff }); } @@ -101,8 +102,12 @@ class SessionReducer extends Reducer { sessionStore.storeUserData(payload.data); return _.extend({}, state, { - userName: userData.name, - userEmail: userData.email, + staff: userData.staff, + userName: userData.name, + userEmail: userData.email, + userProfilePic: userData.profilePic, + userLevel: userData.level, + userDepartments: userData.departments, userTickets: userData.tickets }); } @@ -113,8 +118,12 @@ class SessionReducer extends Reducer { return _.extend({}, state, { initDone: true, logged: true, + staff: userData.staff, userName: userData.name, userEmail: userData.email, + userProfilePic: userData.profilePic, + userLevel: userData.level, + userDepartments: userData.departments, userTickets: userData.tickets }); }