From 13c2112c734e4f5732319408ea0bfa3874cc1b7d Mon Sep 17 00:00:00 2001 From: Luke Berndt Date: Wed, 22 Mar 2023 22:26:02 -0400 Subject: [PATCH] cleaned up admin --- admin/server/controllers/permissions.js | 241 ------------------- admin/server/controllers/systems.js | 8 +- admin/server/models/permission.js | 24 -- admin/server/models/user.js | 87 ------- admin/src/App/NavigationContainer.js | 21 -- admin/src/Group/GroupModalContainer.js | 26 --- admin/src/Group/group-actions.js | 245 -------------------- admin/src/Group/group-constants.js | 16 -- admin/src/Group/group-reducer.js | 123 ---------- admin/src/System/CreateSystemContainer.js | 14 -- admin/src/System/ListSystemsContainer.js | 16 -- admin/src/System/PreCreateSystem.js | 72 ------ admin/src/System/UpdateSystemContainer.js | 18 -- admin/src/System/error-actions.js | 54 ----- admin/src/System/error-constants.js | 3 - admin/src/System/error-reducer.js | 42 ---- admin/src/System/statistic-reducer.js | 20 -- admin/src/System/system-actions.js | 232 ------------------ admin/src/System/system-constants.js | 16 -- admin/src/System/system-reducer.js | 93 -------- admin/src/Talkgroups/talkgroup-actions.js | 163 ------------- admin/src/Talkgroups/talkgroup-constants.js | 9 - admin/src/Talkgroups/talkgroup-reducer.js | 51 ---- admin/src/User/user-actions.js | 46 ---- admin/src/User/user-constants.js | 6 - admin/src/User/user-reducer.js | 55 ----- 26 files changed, 5 insertions(+), 1696 deletions(-) delete mode 100644 admin/server/controllers/permissions.js delete mode 100644 admin/server/models/permission.js delete mode 100644 admin/server/models/user.js delete mode 100644 admin/src/App/NavigationContainer.js delete mode 100644 admin/src/Group/GroupModalContainer.js delete mode 100644 admin/src/Group/group-actions.js delete mode 100644 admin/src/Group/group-constants.js delete mode 100644 admin/src/Group/group-reducer.js delete mode 100644 admin/src/System/CreateSystemContainer.js delete mode 100644 admin/src/System/ListSystemsContainer.js delete mode 100644 admin/src/System/PreCreateSystem.js delete mode 100644 admin/src/System/UpdateSystemContainer.js delete mode 100644 admin/src/System/error-actions.js delete mode 100644 admin/src/System/error-constants.js delete mode 100644 admin/src/System/error-reducer.js delete mode 100644 admin/src/System/statistic-reducer.js delete mode 100644 admin/src/System/system-actions.js delete mode 100644 admin/src/System/system-constants.js delete mode 100644 admin/src/System/system-reducer.js delete mode 100644 admin/src/Talkgroups/talkgroup-actions.js delete mode 100644 admin/src/Talkgroups/talkgroup-constants.js delete mode 100644 admin/src/Talkgroups/talkgroup-reducer.js delete mode 100644 admin/src/User/user-actions.js delete mode 100644 admin/src/User/user-constants.js delete mode 100644 admin/src/User/user-reducer.js diff --git a/admin/server/controllers/permissions.js b/admin/server/controllers/permissions.js deleted file mode 100644 index df286f1..0000000 --- a/admin/server/controllers/permissions.js +++ /dev/null @@ -1,241 +0,0 @@ -const mongoose = require("mongoose"); -const Permission = require("../models/permission"); -const System = require("../models/system"); -const User = require("../models/user"); - -exports.fetchPermissions = function(req, res, next) { - Permission.find( - { - shortName: req.params.shortName.toLowerCase() - }, - function(err, permissions) { - if (err) { - console.error(err); - res.json({ success: false, message: err }); - return; - } - var userIds = permissions.map(permission => {return permission.userId}); - User.find( - { - _id: { - $in: userIds - } - }, - function(err, users) { - if (err) { - console.error(err); - res.json({ success: false, message: err }); - return; - } - var returnUsers = users.map(user =>{ - var permission = permissions.find(obj => { - - if (obj.userId.toString() == user._id.toString()) { - return true; - } - return false; - }); - if (!permission) { - console.error("Error - Permission not found for user: " + user._id); - res.json({ success: false, message: "Permission not found" }); - return; - } - return {_id: permission._id, userId: user._id, firstName: user.firstName, lastName: user.lastName, email: user.email, role: permission.role }; - }); - - res.json({ success: true, permissions: returnUsers }); - }); - return; - } - ); -}; - - -exports.addPermission = async (req, res, next) => { - //router.post('/system/:shortName/group/:groupId?', isLoggedIn, function(req, res) { - - - let role = req.body.role; - var system = false; - var user = false; - var existing = false; - var saved = false; - if (!role || (role >= 20) || (role <1)) { - res.json({ - success: false, - message: "Invalid Role" - }); - return; - } - console.log("role looks good"); - try { - system = await System.findOne( - { - shortName: req.params.shortName.toLowerCase() - }); - } catch(err) { - console.error(err); - res.json({ success: false, message: err }); - return; - } - - if (!system) { - res.json({ - success: false, - message: "That System does not exist." - }); - return; - } - console.log("system looks good") - try { - user = await User.findOne( - { - email: req.body.email - }); - } catch (err) { - console.error(err); - res.json({ success: false, message: err }); - return; - } - - if (!user) { - res.json({ success: false, message: "User not found" }); - return; - } - console.log("user looks good") - try { - existing = await Permission.findOne({userId: user._id, systemId: system._id}); - } catch (err) { - console.error(err); - res.json({ success: false, message: err }); - return; - } - - if (existing) { - res.json({ success: false, message: "User already has acccess" }); - return; - } - console.log("no existing") - var permission = new Permission({ - userId: user._id, - systemId: system._id, - shortName: system.shortName, - role: role - }); - - - try { - saved = await permission.save() - } catch(err) { - - res.json({ - success: false, - message: err - }); - return; - } - console.log("saved it") - var newPermission = saved.toObject(); - newPermission.firstName = user.firstName; - newPermission.lastName = user.lastName; - newPermission.email = user.email; - - - console.log("Add Permission to: " + system.shortName + " for: " + newPermission.email + " by: " + req.user.email); - res.json({ - success: true, - permission: newPermission - }); -}; - - -exports.updatePermission = function(req, res, next) { - process.nextTick(function() { - Permission.findOne( - { - _id: new mongoose.Types.ObjectId(req.params.permissionId), - shortName: req.params.shortName.toLowerCase(req.params.shortName) - }, - - function(err, permission) { - if (err) { - res.json({ - success: false, - message: err - }); - return; - } - if (permission.role >= 20) { - res.json({ - success: false, - message: "Cannot change permissions of system owner" - }); - return; - } - var newRole = req.body.role; - if (!newRole || (newRole >= 20) || (newRole <1)) { - res.json({ - success: false, - message: "Invalid Role" - }); - return; - } - permission.role = newRole; - permission.save(function(err, saved) { - if (err) { - res.json({ - success: false, - message: err - }); - return; - } - res.json({ - success: true, - permission: saved.toJSON() - }); - return; - - }); - } - ); - - }); -}; - - -exports.deletePermission = function(req, res, next) { -//router.get('/system/:shortName/remove_group/:groupId', isLoggedIn, function(req, res) { - - Permission.findOneAndRemove({ - shortName: req.params.shortName.toLowerCase(), - '_id': new mongoose.Types.ObjectId(req.params.permissionId), - role: { $lt : 20} - }, function(err, permission) { - - if (err) { - res.json({ - success: false, - message: err - }); - return; - } - - if (!permission) { - res.json({ - success: false, - message: "Permission not found" - }); - return; - - } else { - - res.json({ - success: true - }); - return; - } - // removed! - }); - - -}; diff --git a/admin/server/controllers/systems.js b/admin/server/controllers/systems.js index 50047a9..4fc18ad 100644 --- a/admin/server/controllers/systems.js +++ b/admin/server/controllers/systems.js @@ -27,7 +27,7 @@ exports.listSystems = async function (req, res, next) { shortNames.push(systems[i].shortName); } - const stats = await SystemStat.find({ shortName: { $in: shortNames } }).exec(); + let returnSys = systems.map(obj => { var rObj = (({ @@ -65,6 +65,8 @@ exports.listSystems = async function (req, res, next) { rObj.id = obj._id; return rObj; }); + + const stats = await SystemStat.find({ shortName: { $in: shortNames } }).exec(); var sys_stats = {} for (var i = 0; i < stats.length; i++) { sys_stats[stats[i].shortName] = {}; @@ -88,11 +90,11 @@ const remove_system = async (shortName) => { await System.deleteOne({ shortName: shortName - }).catch( err => console.error(err)); + }).catch(err => console.error(err)); await Talkgroup.deleteMany({ shortName: shortName - }).catch( err => console.error(err)); + }).catch(err => console.error(err)); await Group.deleteMany({ diff --git a/admin/server/models/permission.js b/admin/server/models/permission.js deleted file mode 100644 index 581011f..0000000 --- a/admin/server/models/permission.js +++ /dev/null @@ -1,24 +0,0 @@ -// Defining a User Model in mongoose -// Code modified from https://github.com/sahat/hackathon-starter - -var mongoose = require("mongoose"); - - - -const PermissionSchema = new mongoose.Schema({ - userId: mongoose.Schema.Types.ObjectId, - systemId: mongoose.Schema.Types.ObjectId, - shortName: String, - role: { - type: Number, - default: 0 - }, - ver: { - type: Number, - default: 1.2 - } -}) - - - -module.exports=mongoose.model("Permission", PermissionSchema) diff --git a/admin/server/models/user.js b/admin/server/models/user.js deleted file mode 100644 index 6f9fe3c..0000000 --- a/admin/server/models/user.js +++ /dev/null @@ -1,87 +0,0 @@ -// Defining a User Model in mongoose -// Code modified from https://github.com/sahat/hackathon-starter -const bcrypt = require("bcrypt"); -const mongoose = require("mongoose"); - - - -const UserSchema = new mongoose.Schema({ - local: { - name: String, - email: String, - password: String - }, - email: { - type: String, - unique: true, - lowercase: true - }, - password: String, - screenName: { - type: String, - unique: true, - lowercase: true - }, - firstName: String, - lastName: String, - location: String, - email: String, - resetPasswordToken: String, - resetPasswordTTL: Date, - confirmEmail: { - type: Boolean, - default: false - }, - confirmEmailToken: String, - confirmEmailTTL: Date, - admin: { - type: Boolean, - default: false - }, - terms: { - type: Number, - default: 0 - }, - ver: { - type: Number, - default: 1.1 - }, - sysCount: Number, - lastLogin: { type : Date, default: Date.now } -}) - -/** - * Password hash middleware. - */ -UserSchema.pre("save", function(next) { - var user = this - if (!user.isModified("password")) return next() - bcrypt.genSalt(8, (err, salt) => { - if (err) return next(err) - bcrypt.hash(user.password, salt, null, (err, hash) => { - if (err) return next(err) - user.password = hash; - user.local.password = hash; - next() - }) - }) -}) - -/* - Defining our own custom document instance method - */ - UserSchema.methods = { - comparePassword: function(candidatePassword, cb) { - bcrypt.compare(candidatePassword, this.local.password, (err, isMatch) => { - if (err) return cb(err) - cb(null, isMatch) - }) - } - } - -/** -* Statics -*/ -UserSchema.statics = {} - -module.exports = mongoose.model("User", UserSchema) diff --git a/admin/src/App/NavigationContainer.js b/admin/src/App/NavigationContainer.js deleted file mode 100644 index ab31c72..0000000 --- a/admin/src/App/NavigationContainer.js +++ /dev/null @@ -1,21 +0,0 @@ -import { connect } from "react-redux" -import * as userActions from "../User/user-actions" -import Navigation from "./Navigation" - - -// Function passed in to `connect` to subscribe to Redux store updates. -// Any time it updates, mapStateToProps is called. -const mapStateToProps = (state) => { - return { - user: state.user - } - -} - -// Connects React component to the redux store -// It does not modify the component class passed to it -// Instead, it returns a new, connected component class, for you to use. -export default connect( - mapStateToProps, - userActions -)(Navigation) diff --git a/admin/src/Group/GroupModalContainer.js b/admin/src/Group/GroupModalContainer.js deleted file mode 100644 index 794a8dc..0000000 --- a/admin/src/Group/GroupModalContainer.js +++ /dev/null @@ -1,26 +0,0 @@ -import { connect } from "react-redux" -import * as groupActionCreators from "./group-actions" -import * as talkgroupActionCreators from "../Talkgroups/talkgroup-actions" -import { bindActionCreators } from 'redux' -import GroupModal from "./GroupModal" - -//groups: state.group.items[props.match.params.shortName], -function mapStateToProps(state,props) { - return { - talkgroups: state.talkgroup.items[props.shortName], - groups: state.group.items[props.shortName], - shortName: props.shortName - } -} - -function mapDispatchToProps(dispatch) { - return { - groupActions: bindActionCreators(groupActionCreators,dispatch), - talkgroupActions: bindActionCreators(talkgroupActionCreators, dispatch) - } -} - -export default connect( - mapStateToProps, - mapDispatchToProps -)(GroupModal) diff --git a/admin/src/Group/group-actions.js b/admin/src/Group/group-actions.js deleted file mode 100644 index 8b9a90f..0000000 --- a/admin/src/Group/group-actions.js +++ /dev/null @@ -1,245 +0,0 @@ -import axios from "axios"; -//import { browserHistory } from "react-router" -import * as types from "./group-constants"; -import { push } from '@lagunovsky/redux-react-router' - -// "Log In" action creators -function beginCreateGroup() { - return { type: types.CREATE_GROUP }; -} - -function createGroupSuccess(data) { - return { - type: types.CREATE_SUCCESS_GROUP, - data - }; -} - -function createGroupError(data) { - return { - type: types.CREATE_ERROR_GROUP, - data - }; -} - - -function beginUpdateGroup() { - return { type: types.UPDATE_GROUP }; -} - -function updateGroupSuccess(data) { - return { type: types.UPDATE_SUCCESS_GROUP, data }; -} - -function updateGroupError() { - return { type: types.UPDATE_ERROR_GROUP }; -} - - -function beginDeleteGroup() { - return { type: types.DELETE_GROUP }; -} - -function deleteGroupSuccess(data) { - return { type: types.DELETE_SUCCESS_GROUP, data }; -} - -function deleteGroupError() { - return { type: types.DELETE_ERROR_GROUP }; -} - -function beginFetchGroup() { - return { type: types.FETCH_GROUP }; -} - -function fetchGroupSuccess(data) { - return { - type: types.FETCH_SUCCESS_GROUP, - data - }; -} - -function fetchGroupError(data) { - return { - type: types.FETCH_ERROR_GROUP, - data - }; -} - -function saveGroupOrderSuccess() { - return { type: types.SAVE_ORDER_SUCCESS_GROUP }; -} - -function saveGroupOrderError() { - return { type: types.SAVE_ORDER_ERROR_GROUP }; -} - -function makeUserRequest(method, data, api = "/login") { - // returns a Promise - return axios({ - method: method, - url: api, - data: data, - withCredentials: true - }); -} - -export function changeUrl(url) { - return dispatch => { - dispatch(push(url)); - }; -} - -// Example of an Async Action Creator -// http://redux.js.org/docs/advanced/AsyncActions.html - -export function updateGroup(data) { - return dispatch => { - dispatch(beginUpdateGroup()); - - return makeUserRequest("post", data, process.env.REACT_APP_ADMIN_SERVER + "/groups/" + data.shortName + "/" + data._id) - .then(response => { - if (response.data.success) { - dispatch(updateGroupSuccess(response.data.group)); - } else { - dispatch(updateGroupError()); - let registerMessage = response.data.message; - return registerMessage; - } - }) - .catch(response => { - if (response instanceof Error) { - // Something happened in setting up the request that triggered an Error - console.log("Error", response.message); - } - }); - }; -} - -function shouldFetchGroups(state,shortName) { - if (!state.group.items || !state.group.items[shortName]) { - return true; - } else if (state.group.isWaiting) { - return false; - } else { - return false; - } -} - -export function reorderGroup(shortName, oldIndex, newIndex) { - return (dispatch, getState) => { - const data = { - shortName: shortName, - oldIndex: oldIndex, - newIndex: newIndex - }; - dispatch({ - type: types.REORDER_GROUP, - data - }); - }; -} - -export function fetchGroups(shortName) { - return (dispatch, getState) => { - if (shouldFetchGroups(getState(), shortName)) { - dispatch(beginFetchGroup()); - return axios - .get(process.env.REACT_APP_ADMIN_SERVER + "/groups/" + shortName, {withCredentials: true}) - .then(response => { - if (response.data.success) { - const data = { shortName: shortName, groups: response.data.groups }; - dispatch(fetchGroupSuccess(data)); - } else { - dispatch(fetchGroupError()); - let registerMessage = response.data.message; - return registerMessage; - } - }) - .catch(response => { - if (response instanceof Error) { - // Something happened in setting up the request that triggered an Error - console.log("Error", response.message); - } - }); - } - }; -} - -export function saveGroupOrder(shortName, data) { - return dispatch => { - dispatch({ - type: types.SAVE_ORDER_GROUP, - data - }); - - return makeUserRequest( - "post", - data, - process.env.REACT_APP_ADMIN_SERVER + "/groups/" + shortName + "/reorder" - ) - .then(response => { - if (response.data.success) { - dispatch(saveGroupOrderSuccess()); - } else { - dispatch(saveGroupOrderError()); - let registerMessage = response.data.message; - return registerMessage; - } - }) - .catch(response => { - if (response instanceof Error) { - // Something happened in setting up the request that triggered an Error - console.log("Error", response.message); - } - }); - }; -} - -export function deleteGroup(shortName, groupId) { - return dispatch => { - dispatch(beginDeleteGroup()); - - return makeUserRequest("delete", null, process.env.REACT_APP_ADMIN_SERVER + "/groups/" + shortName + "/" + groupId) - .then(response => { - if (response.data.success) { - const data = {shortName: shortName, groupId: groupId} - dispatch(deleteGroupSuccess(data)); - } else { - dispatch(deleteGroupError()); - let registerMessage = response.data.message; - return registerMessage; - } - }) - .catch(response => { - if (response instanceof Error) { - // Something happened in setting up the request that triggered an Error - console.log("Error", response.message); - } - }); - }; -} - - -export function createGroup(data) { - return dispatch => { - dispatch(beginCreateGroup()); - - return makeUserRequest("post", data, process.env.REACT_APP_ADMIN_SERVER + "/groups/" + data.shortName) - .then(response => { - if (response.data.success) { - dispatch(createGroupSuccess(response.data.group)); - } else { - dispatch(createGroupError()); - let registerMessage = response.data.message; - return registerMessage; - } - }) - .catch(response => { - if (response instanceof Error) { - // Something happened in setting up the request that triggered an Error - console.log("Error", response.message); - } - }); - }; -} diff --git a/admin/src/Group/group-constants.js b/admin/src/Group/group-constants.js deleted file mode 100644 index 2552e3d..0000000 --- a/admin/src/Group/group-constants.js +++ /dev/null @@ -1,16 +0,0 @@ -export const CREATE_GROUP = "CREATE_GROUP" -export const CREATE_SUCCESS_GROUP = "CREATE_SUCCESS_GROUP" -export const CREATE_ERROR_GROUP = "CREATE_ERROR_GROUP" -export const UPDATE_GROUP = "UPDATE_GROUP" -export const UPDATE_SUCCESS_GROUP = "UPDATE_SUCCESS_GROUP" -export const UPDATE_ERROR_GROUP = "UPDATE_ERROR_GROUP" -export const DELETE_GROUP = "DELETE_GROUP" -export const DELETE_SUCCESS_GROUP = "DELETE_SUCCESS_GROUP" -export const DELETE_ERROR_GROUP = "DELETE_ERROR_GROUP" -export const FETCH_GROUP = "FETCH_GROUP" -export const FETCH_SUCCESS_GROUP = "FETCH_SUCCESS_GROUP" -export const FETCH_ERROR_GROUP = "FETCH_ERROR_GROUP" -export const REORDER_GROUP = "REORDER_GROUP" -export const SAVE_ORDER_GROUP = "SAVE_ORDER_GROUP" -export const SAVE_ORDER_SUCCESS_GROUP = "SAVE_ORDER_SUCCESS_GROUP" -export const SAVE_ORDER_ERROR_GROUP = "SAVE_ORDER_ERROR_GROUP" diff --git a/admin/src/Group/group-reducer.js b/admin/src/Group/group-reducer.js deleted file mode 100644 index 5d11eff..0000000 --- a/admin/src/Group/group-reducer.js +++ /dev/null @@ -1,123 +0,0 @@ -import { - CREATE_GROUP, - CREATE_SUCCESS_GROUP, - CREATE_ERROR_GROUP, - DELETE_GROUP, - DELETE_SUCCESS_GROUP, - DELETE_ERROR_GROUP, - UPDATE_GROUP, - UPDATE_SUCCESS_GROUP, - UPDATE_ERROR_GROUP, - FETCH_GROUP, - FETCH_SUCCESS_GROUP, - FETCH_ERROR_GROUP, - REORDER_GROUP, - SAVE_ORDER_GROUP, - SAVE_ORDER_ERROR_GROUP, - SAVE_ORDER_SUCCESS_GROUP -} from "./group-constants"; - - -function updateItemInArray(array, updatedItem) { - const updatedItems = array.map(item => { - if(item._id !== updatedItem._id) { - // Since we only want to update one item, preserve all others as they are now - return item; - } - return updatedItem; - }); - - return updatedItems; -} - -const group = ( - state = { - orderChange: false, - isWaiting: false, - items: {}}, - action -) => { - switch (action.type) { - - case SAVE_ORDER_GROUP: - case CREATE_GROUP: - case FETCH_GROUP: - case DELETE_GROUP: - case UPDATE_GROUP: - return Object.assign({}, state, { isWaiting: true}); - - case UPDATE_SUCCESS_GROUP: - const updatedGroups = updateItemInArray(state.items[action.data.shortName], action.data); - return Object.assign({}, state, { - isWaiting: false, - items: { - ...state.items, - [action.data.shortName]: updatedGroups - } - }); - - - case CREATE_SUCCESS_GROUP: - const newGroups = state.items[action.data.shortName].concat(action.data); - return Object.assign({}, state, { - isWaiting: false, - items: { - ...state.items, - [action.data.shortName]: newGroups - } - }); - - case DELETE_SUCCESS_GROUP: - const delGroups = state.items[action.data.shortName].filter(x => x._id !== action.data.groupId); - return Object.assign({}, state, { - isWaiting: false, - items: { - ...state.items, - [action.data.shortName]: delGroups - } - }); - - case FETCH_SUCCESS_GROUP: - return Object.assign({}, state, { - isWaiting: false, - items: { - ...state.items, - [action.data.shortName]: action.data.groups - } - }); - - case SAVE_ORDER_SUCCESS_GROUP: - return Object.assign({}, state, { - orderChange: false, - isWaiting: false - }); - - case SAVE_ORDER_ERROR_GROUP: - case FETCH_ERROR_GROUP: - case CREATE_ERROR_GROUP: - case DELETE_ERROR_GROUP: - case UPDATE_ERROR_GROUP: - return Object.assign({}, state, { - isWaiting: false - }); - - case REORDER_GROUP: - if ((action.data.newIndex<0)||(action.data.newIndex>(state.items[action.data.shortName].length-1))) { - return state - } - const moveGroups = state.items[action.data.shortName].slice(); - moveGroups.splice(action.data.newIndex, 0, moveGroups.splice(action.data.oldIndex, 1)[0]); - return Object.assign({}, state, { - orderChange: true, - items: { - ...state.items, - [action.data.shortName]: moveGroups - } - }); - - default: - return state; - } -}; - -export default group; diff --git a/admin/src/System/CreateSystemContainer.js b/admin/src/System/CreateSystemContainer.js deleted file mode 100644 index dae3f90..0000000 --- a/admin/src/System/CreateSystemContainer.js +++ /dev/null @@ -1,14 +0,0 @@ -import { connect } from "react-redux" -import * as systemActions from "./system-actions" -import CreateSystem from "./CreateSystem" - -function mapStateToProps(state) { - return { - user: state.user - } -} - -export default connect( - mapStateToProps, - systemActions -)(CreateSystem) diff --git a/admin/src/System/ListSystemsContainer.js b/admin/src/System/ListSystemsContainer.js deleted file mode 100644 index 9052b1f..0000000 --- a/admin/src/System/ListSystemsContainer.js +++ /dev/null @@ -1,16 +0,0 @@ -import { connect } from "react-redux" -import * as systemActions from "./system-actions" -import ListSystems from "./ListSystems" - -function mapStateToProps(state) { - return { - system: state.system - } -} - - - -export default connect( - mapStateToProps, - systemActions -)(ListSystems) diff --git a/admin/src/System/PreCreateSystem.js b/admin/src/System/PreCreateSystem.js deleted file mode 100644 index 5051633..0000000 --- a/admin/src/System/PreCreateSystem.js +++ /dev/null @@ -1,72 +0,0 @@ -import React, { Component } from "react"; -import ReactDOM from "react-dom"; -import { - Container, - Header, - Form, - Grid, - Segment, - Input, - Button, - Message, - Step, - Icon -} from "semantic-ui-react"; - -import SystemForm from "./SystemForm"; - -// ---------------------------------------------------- -const requestMessageStyle = { - color: "red" -}; - -// ---------------------------------------------------- -class PreCreateSystem extends Component { - constructor(props) { - super(props); - - } - - state = { - requestMessage: "" - } - - - - render() { - return ( -
- - - - - Trunk Recorder - Choose your shipping options - - - - - - - Billing - Enter billing information - - - - - - - Confirm Order - - - - - - - -
- ); - } -} - -export default PreCreateSystem; diff --git a/admin/src/System/UpdateSystemContainer.js b/admin/src/System/UpdateSystemContainer.js deleted file mode 100644 index d974068..0000000 --- a/admin/src/System/UpdateSystemContainer.js +++ /dev/null @@ -1,18 +0,0 @@ -import { connect } from "react-redux" -import UpdateSystem from "./UpdateSystem" -import * as systemActions from "./system-actions" - - - -const mapStateToProps = (state, props) => { - - return { - system: state.system.items.find((item) => item.shortName === props.match.params.shortName), - user: state.user - } -} - -export default connect( - mapStateToProps, - systemActions -)(UpdateSystem) diff --git a/admin/src/System/error-actions.js b/admin/src/System/error-actions.js deleted file mode 100644 index ebfa2a6..0000000 --- a/admin/src/System/error-actions.js +++ /dev/null @@ -1,54 +0,0 @@ -import axios from "axios"; -//import { browserHistory } from "react-router" -import * as types from "./error-constants"; -import { push } from '@lagunovsky/redux-react-router'; - - -function beginFetch() { - return { type: types.FETCH }; -} - -function fetchSuccess(data) { - return { type: types.FETCH_SUCCESS, - data }; -} - -function fetchError(data) { - return { type: types.FETCH_ERROR, - data }; -} - -export function changeUrl(url) { - return dispatch => { - dispatch(push(url)); - }; -} - -export function fetch(shortName) { - return (dispatch, getState) => { - - dispatch(beginFetch()); - - return axios - .get(process.env.REACT_APP_BACKEND_SERVER + "/" + shortName + "/errors", {withCredentials: true}) - .then(response => { - if (response.data) { - var data ={ - shortName: shortName, - errors: response.data - } - dispatch(fetchSuccess(data)); - } else { - dispatch(fetchError()); - let registerMessage = response.data.message; - return registerMessage; - } - }) - .catch(response => { - if (response instanceof Error) { - // Something happened in setting up the request that triggered an Error - console.log("Error", response.message); - } - }); - }; -} diff --git a/admin/src/System/error-constants.js b/admin/src/System/error-constants.js deleted file mode 100644 index 13690f7..0000000 --- a/admin/src/System/error-constants.js +++ /dev/null @@ -1,3 +0,0 @@ -export const FETCH = "FETCH" -export const FETCH_SUCCESS = "FETCH_SUCCESS" -export const FETCH_ERROR = "FETCH_ERROR" diff --git a/admin/src/System/error-reducer.js b/admin/src/System/error-reducer.js deleted file mode 100644 index 4a5bf5d..0000000 --- a/admin/src/System/error-reducer.js +++ /dev/null @@ -1,42 +0,0 @@ -import { - FETCH, - FETCH_SUCCESS, - FETCH_ERROR -} from "./error-constants"; - - - -const error = ( - state = { - isWaiting: false, - items: {} - }, - action -) => { - switch (action.type) { - - case FETCH: - - return Object.assign({}, state, { isWaiting: true}); - - - case FETCH_SUCCESS: - return Object.assign({}, state, { - isWaiting: false, - items: { - ...state.items, - [action.data.shortName]: action.data.errors - } - }); - - case FETCH_ERROR: - return Object.assign({}, state, { - isWaiting: false - }); - - default: - return state; - } -}; - -export default error; diff --git a/admin/src/System/statistic-reducer.js b/admin/src/System/statistic-reducer.js deleted file mode 100644 index bc0aa45..0000000 --- a/admin/src/System/statistic-reducer.js +++ /dev/null @@ -1,20 +0,0 @@ - - -const FETCH_SUCCESS_STATISTIC = "FETCH_SUCCESS_STATISTIC" - -const statistic = ( - state = {}, - action -) => { - switch (action.type) { - - - case FETCH_SUCCESS_STATISTIC: - return Object.assign({}, state, {...action.data}); - - default: - return state; - } -}; - -export default statistic; diff --git a/admin/src/System/system-actions.js b/admin/src/System/system-actions.js deleted file mode 100644 index a7ddf84..0000000 --- a/admin/src/System/system-actions.js +++ /dev/null @@ -1,232 +0,0 @@ -import axios from "axios"; -//import { browserHistory } from "react-router" -import * as types from "./system-constants"; -import { push } from '@lagunovsky/redux-react-router'; - - -// "Log In" action creators -function beginCreateSystem() { - return { type: types.CREATE_SYSTEM }; -} - -function createSystemSuccess(data) { - return { - type: types.CREATE_SUCCESS_SYSTEM, - data - }; -} - -function createSystemError(data) { - return { - type: types.CREATE_ERROR_SYSTEM, - data - }; -} - -function beginUpdateSystem() { - return { type: types.UPDATE_SYSTEM }; -} - -function updateSystemSuccess(data) { - return { type: types.UPDATE_SUCCESS_SYSTEM, data }; -} - -function updateSystemError(data) { - return { type: types.UPDATE_ERROR_SYSTEM, data }; -} - -function beginDeleteSystem() { - return { type: types.DELETE_SYSTEM }; -} - -function deleteSystemSuccess(data) { - return { type: types.DELETE_SUCCESS_SYSTEM, - data }; -} - -function deleteSystemError() { - return { type: types.DELETE_ERROR_SYSTEM }; -} - -function beginFetchSystem() { - return { type: types.FETCH_SYSTEM }; -} - -function fetchSystemSuccess(data) { - return { type: types.FETCH_SUCCESS_SYSTEM, - data }; -} - -function fetchStatisticSuccess(data) { - return { type: types.FETCH_SUCCESS_STATISTIC, - data }; -} - -function fetchSystemError(data) { - return { type: types.FETCH_ERROR_SYSTEM, - data }; -} - -function beginFetchError() { - return { type: types.FETCH_ERROR }; -} - -function fetchErrorsSuccess(data) { - return { type: types.FETCH_SUCCESS_ERROR, - data }; -} - -function fetchErrorsError(data) { - return { type: types.FETCH_ERROR_ERROR, - data }; -} - -function makeUserRequest(method, data, api = "/login") { - // returns a Promise - return axios({ - method: method, - url: api, - data: data, - withCredentials: true - }); -} - -export function changeUrl(url) { - return dispatch => { - dispatch(push(url)); - }; -} - -// Example of an Async Action Creator -// http://redux.js.org/docs/advanced/AsyncActions.html - -export function updateSystem(data) { - return dispatch => { - dispatch(beginUpdateSystem()); - - return makeUserRequest("post", data, process.env.REACT_APP_ADMIN_SERVER + "/systems/" + data.shortName, {withCredentials: true}) - .then(response => { - if (response.data.success) { - dispatch(updateSystemSuccess(response.data.system)); - } else { - dispatch(updateSystemError()); - return response.data.message; - } - }) - .catch(response => { - if (response instanceof Error) { - // Something happened in setting up the request that triggered an Error - console.log("Error", response.message); - } - }); - }; -} - -function shouldFetchSystems(state, subreddit) { - if ((!state.system.items) || (state.system.items.length <1)) { - return true - } else if (state.system.isWaiting) { - return false - } else { - return false - } -} - -export function fetchErrors(shortName) { - return (dispatch, getState) => { - - dispatch(beginFetchError()); - - return axios - .get(process.env.REACT_APP_BACKEND_SERVER + "/" + shortName + "/systems", {withCredentials: true}) - .then(response => { - if (response.data) { - dispatch(fetchErrorsSuccess(shortName, response.data)); - } else { - dispatch(fetchErrorsError()); - let registerMessage = response.data.message; - return registerMessage; - } - }) - .catch(response => { - if (response instanceof Error) { - // Something happened in setting up the request that triggered an Error - console.log("Error", response.message); - } - }); - }; -} - -export function fetchSystems() { - return (dispatch, getState) => { - if (shouldFetchSystems(getState())) { - dispatch(beginFetchSystem()); - - return axios - .get(process.env.REACT_APP_ADMIN_SERVER + "/systems", {withCredentials: true}) - .then(response => { - if (response.data.success) { - dispatch(fetchSystemSuccess(response.data.systems)); - dispatch(fetchStatisticSuccess(response.data.stats)); - } else { - dispatch(fetchSystemError()); - let registerMessage = response.data.message; - return registerMessage; - } - }) - .catch(response => { - if (response instanceof Error) { - // Something happened in setting up the request that triggered an Error - console.log("Error", response.message); - } - }); - }; -}; -} - -export function deleteSystem(shortName) { - return dispatch => { - dispatch(beginDeleteSystem()); - - return makeUserRequest("delete", null, process.env.REACT_APP_ADMIN_SERVER + "/systems/"+shortName) - .then(response => { - if (response.data.success) { - dispatch(deleteSystemSuccess({shortName: shortName})); - dispatch(push("/list-systems")); - } else { - dispatch(deleteSystemError()); - let registerMessage = response.data.message; - return registerMessage; - } - }) - .catch(response => { - if (response instanceof Error) { - // Something happened in setting up the request that triggered an Error - console.log("Error", response.message); - } - }); - }; -} - -export function createSystem(data) { - return dispatch => { - dispatch(beginCreateSystem()); - - return makeUserRequest("post", data, process.env.REACT_APP_ADMIN_SERVER + "/systems", {withCredentials: true}) - .then(response => { - if (response.data.success) { - dispatch(createSystemSuccess(response.data.system)); - } else { - dispatch(createSystemError()); - let registerMessage = response.data.message; - return registerMessage; - } - }) - .catch(response => { - if (response instanceof Error) { - // Something happened in setting up the request that triggered an Error - console.log("Error", response.message); - } - }); - }; -} diff --git a/admin/src/System/system-constants.js b/admin/src/System/system-constants.js deleted file mode 100644 index 91e91da..0000000 --- a/admin/src/System/system-constants.js +++ /dev/null @@ -1,16 +0,0 @@ -export const CREATE_SYSTEM = "CREATE_SYSTEM" -export const CREATE_SUCCESS_SYSTEM = "CREATE_SUCCESS_SYSTEM" -export const CREATE_ERROR_SYSTEM = "CREATE_ERROR_SYSTEM" -export const UPDATE_SYSTEM = "UPDATE_SYSTEM" -export const UPDATE_SUCCESS_SYSTEM = "UPDATE_SUCCESS_SYSTEM" -export const UPDATE_ERROR_SYSTEM = "UPDATE_ERROR_SYSTEM" -export const DELETE_SYSTEM = "DELETE_SYSTEM" -export const DELETE_SUCCESS_SYSTEM = "DELETE_SUCCESS_SYSTEM" -export const DELETE_ERROR_SYSTEM = "DELETE_ERROR_SYSTEM" -export const FETCH_SYSTEM = "FETCH_SYSTEM" -export const FETCH_SUCCESS_SYSTEM = "FETCH_SUCCESS_SYSTEM" -export const FETCH_ERROR_SYSTEM = "FETCH_ERROR_SYSTEM" -export const FETCH_SUCCESS_STATISTIC = "FETCH_SUCCESS_STATISTIC" -export const FETCH_ERROR = "FETCH_ERROR" -export const FETCH_SUCCESS_ERROR = "FETCH_SUCCESS_ERROR" -export const FETCH_ERROR_ERROR = "FETCH_ERROR_ERROR" diff --git a/admin/src/System/system-reducer.js b/admin/src/System/system-reducer.js deleted file mode 100644 index 7c33a4c..0000000 --- a/admin/src/System/system-reducer.js +++ /dev/null @@ -1,93 +0,0 @@ -import { - CREATE_SYSTEM, - CREATE_SUCCESS_SYSTEM, - CREATE_ERROR_SYSTEM, - UPDATE_SYSTEM, - UPDATE_SUCCESS_SYSTEM, - UPDATE_ERROR_SYSTEM, - DELETE_SYSTEM, - DELETE_SUCCESS_SYSTEM, - DELETE_ERROR_SYSTEM, - FETCH_SYSTEM, - FETCH_SUCCESS_SYSTEM, - FETCH_ERROR_SYSTEM -} from "./system-constants"; - -function updateObjectInArray(array, shortName, updatedItem) { - return array.map( item => { - if(item.shortName !== shortName) { - // This isn't the item we care about - keep it as-is - return item; - } - - // Otherwise, this is the one we want - return an updated value - return { - ...item, - ...updatedItem - }; - }); -} - - -const system = ( - state = { - isWaiting: false, - items: []}, - action -) => { - switch (action.type) { - - case DELETE_SYSTEM: - case UPDATE_SYSTEM: - case FETCH_SYSTEM: - case CREATE_SYSTEM: - - return Object.assign({}, state, { isWaiting: true}); - - case DELETE_SUCCESS_SYSTEM: - return Object.assign({}, state, { - items: state.items.filter(item => item.shortName !== action.data.shortName) - }); - - case UPDATE_SUCCESS_SYSTEM: - return Object.assign({}, state, { - items: updateObjectInArray(state.items, action.data.shortName, action.data) - }); - case FETCH_SUCCESS_SYSTEM: - return Object.assign({}, state, { - isWaiting: false, - items: action.data - }); - case CREATE_SUCCESS_SYSTEM: - const newItems = state.items.concat({ - name: action.data.name, - shortName: action.data.shortName, - description: action.data.description, - systemType: action.data.systemType, - city: action.data.city, - state: action.data.state, - county: action.data.county, - country: action.data.country, - key: action.data.key, - userId: action.data.userId, - id: action.data.id, - showScreenName: action.data.showScreenName, - ignoreUnknownTalkgroup : action.data.ignoreUnknownTalkgroup - }); - return Object.assign({}, state, { isWaiting: false, - items: newItems}); - - case DELETE_ERROR_SYSTEM: - case UPDATE_ERROR_SYSTEM: - case FETCH_ERROR_SYSTEM: - case CREATE_ERROR_SYSTEM: - return Object.assign({}, state, { - isWaiting: false - }); - - default: - return state; - } -}; - -export default system; diff --git a/admin/src/Talkgroups/talkgroup-actions.js b/admin/src/Talkgroups/talkgroup-actions.js deleted file mode 100644 index b79c363..0000000 --- a/admin/src/Talkgroups/talkgroup-actions.js +++ /dev/null @@ -1,163 +0,0 @@ -import axios from 'axios'; -//import { browserHistory } from "react-router" -import * as types from "./talkgroup-constants"; -import { push } from '@lagunovsky/redux-react-router'; - -// "Log In" action creators -function beginImportTalkgroup() { - return { type: types.IMPORT_TALKGROUP }; -} - -function importTalkgroupSuccess(data) { - return { - type: types.IMPORT_SUCCESS_TALKGROUP, - data - }; -} - -function importTalkgroupError(data) { - return { - type: types.IMPORT_ERROR_TALKGROUP, - data - }; -} - -function beginExportTalkgroup() { - return { type: types.EXPORT_TALKGROUP }; -} - -function beginFetchTalkgroup() { - return { type: types.FETCH_TALKGROUP }; -} - -function fetchTalkgroupSuccess(data) { - return { type: types.FETCH_SUCCESS_TALKGROUP, - data }; -} - -function fetchTalkgroupError(data) { - return { type: types.FETCH_ERROR_TALKGROUP, - data }; -} - -export function changeUrl(url) { - return dispatch => { - dispatch(push(url)); - }; -} - - -// https://stackoverflow.com/questions/41878838/how-do-i-set-multipart-in-axios-with-react -function fileUpload(shortName, file){ - const url = process.env.REACT_APP_ADMIN_SERVER + "/talkgroups/" + shortName + "/import"; - const formData = new FormData(); - formData.append('file',file) - const config = { - headers: { - 'content-type': 'multipart/form-data' - }, - withCredentials: true - } - return axios.post(url, formData,config) - } - -// Example of an Async Action Creator -// http://redux.js.org/docs/advanced/AsyncActions.html -export function importTalkgroups( - shortName, file, - successPath // path to redirect to upon successful log in -) { - return dispatch => { - dispatch(beginImportTalkgroup()); - - return fileUpload(shortName, file) - .then(response => { - if (response.data.success) { - var data = {}; - data.shortName = shortName; - data.talkgroups = response.data.talkgroups - dispatch(importTalkgroupSuccess(data)); - // use browserHistory singleton to control navigation. Will generate a - // state change for time-traveling as we are using the react-router-redux package - //browserHistory.push(successPath) - - } else { - dispatch(importTalkgroupError(response.data.message)); - return response.data.message; - } - }) - .catch(function(response) { - if (response instanceof Error) { - // Something happened in setting up the request that triggered an Error - console.log("Error", response.message); - return response.message; - } - }); - }; -} - -export function exportTalkgroups( - shortName -) { - return dispatch => { - dispatch(beginExportTalkgroup()); - - return axios - .get(process.env.REACT_APP_ADMIN_SERVER + "/talkgroups/" + shortName + "/export", { withCredentials: true }) - .then(response => { - if (response.data.success) { - var data = {shortName: shortName, talkgroups: response.data.talkgroups} - dispatch(fetchTalkgroupSuccess( data)); - } else { - dispatch(fetchTalkgroupError()); - let registerMessage = response.data.message; - return registerMessage; - } - }) - .catch(response => { - if (response instanceof Error) { - // Something happened in setting up the request that triggered an Error - console.log("Error", response.message); - } - }); - }; - }; - - - -function shouldFetchTalkgroups(state, shortName) { - if (!state.talkgroup.items.hasOwnProperty(shortName)) { - return true - } else if (state.talkgroup.isWaiting) { - return false - } else { - return false - } -} - -export function fetchTalkgroups(shortName) { - return (dispatch, getState) => { - if (shouldFetchTalkgroups(getState(), shortName)) { - dispatch(beginFetchTalkgroup()); - - return axios - .get(process.env.REACT_APP_ADMIN_SERVER + "/talkgroups/"+shortName, { withCredentials: true }) - .then(response => { - if (response.data.success) { - var data = {shortName: shortName, talkgroups: response.data.talkgroups} - dispatch(fetchTalkgroupSuccess( data)); - } else { - dispatch(fetchTalkgroupError()); - let registerMessage = response.data.message; - return registerMessage; - } - }) - .catch(response => { - if (response instanceof Error) { - // Something happened in setting up the request that triggered an Error - console.log("Error", response.message); - } - }); - }; -}; -} diff --git a/admin/src/Talkgroups/talkgroup-constants.js b/admin/src/Talkgroups/talkgroup-constants.js deleted file mode 100644 index e5df09f..0000000 --- a/admin/src/Talkgroups/talkgroup-constants.js +++ /dev/null @@ -1,9 +0,0 @@ -export const IMPORT_TALKGROUP = "IMPORT_TALKGROUP" -export const IMPORT_SUCCESS_TALKGROUP = "IMPORT_SUCCESS_TALKGROUP" -export const IMPORT_ERROR_TALKGROUP = "IMPORT_ERROR_TALKGROUP" -export const EXPORT_TALKGROUP = "EXPORT_TALKGROUP" -export const EXPORT_SUCCESS_TALKGROUP = "EXPORT_SUCCESS_TALKGROUP" -export const EXPORT_ERROR_TALKGROUP = "EXPORT_ERROR_TALKGROUP" -export const FETCH_TALKGROUP = "FETCH_TALKGROUP" -export const FETCH_SUCCESS_TALKGROUP = "FETCH_SUCCESS_TALKGROUP" -export const FETCH_ERROR_TALKGROUP = "FETCH_ERROR_TALKGROUP" diff --git a/admin/src/Talkgroups/talkgroup-reducer.js b/admin/src/Talkgroups/talkgroup-reducer.js deleted file mode 100644 index 396d0d1..0000000 --- a/admin/src/Talkgroups/talkgroup-reducer.js +++ /dev/null @@ -1,51 +0,0 @@ -import { - IMPORT_TALKGROUP, - IMPORT_SUCCESS_TALKGROUP, - IMPORT_ERROR_TALKGROUP, - EXPORT_TALKGROUP, - EXPORT_SUCCESS_TALKGROUP, - EXPORT_ERROR_TALKGROUP, - FETCH_TALKGROUP, - FETCH_SUCCESS_TALKGROUP, - FETCH_ERROR_TALKGROUP -} from "./talkgroup-constants"; - -const talkgroup = ( - state = { - isWaiting: false, - items: {}}, - action -) => { - switch (action.type) { - - case FETCH_TALKGROUP: - case IMPORT_TALKGROUP: - case EXPORT_TALKGROUP: - return Object.assign({}, state, { isWaiting: true}); - - case IMPORT_SUCCESS_TALKGROUP: - case FETCH_SUCCESS_TALKGROUP: - return Object.assign({}, state, { - isWaiting: false, - items: { - ...state.items, - [action.data.shortName]: action.data.talkgroups - } - }); - - - - case FETCH_ERROR_TALKGROUP: - case IMPORT_ERROR_TALKGROUP: - case EXPORT_ERROR_TALKGROUP: - case EXPORT_SUCCESS_TALKGROUP: - return Object.assign({}, state, { - isWaiting: false - }); - - default: - return state; - } -}; - -export default talkgroup; diff --git a/admin/src/User/user-actions.js b/admin/src/User/user-actions.js deleted file mode 100644 index 8b469ee..0000000 --- a/admin/src/User/user-actions.js +++ /dev/null @@ -1,46 +0,0 @@ -import axios from "axios"; -//import { browserHistory } from "react-router" -import * as types from "./user-constants"; -import { push } from '@lagunovsky/redux-react-router'; - - -// "Log Out" action creators -function beginLogout() { - return { type: types.LOGOUT_USER }; -} - -function logoutSuccess() { - return { type: types.LOGOUT_SUCCESS_USER }; -} - -function logoutError() { - return { type: types.LOGOUT_ERROR_USER }; -} - -// Example of an Async Action Creator -// http://redux.js.org/docs/advanced/AsyncActions.html -export function manualLogout() { - return dispatch => { - dispatch(beginLogout()); - - return axios - .get(process.env.REACT_APP_ACCOUNT_SERVER + "/logout", {withCredentials: true}) - .then(response => { - if (response.data.success) { - dispatch(logoutSuccess()); - // use browserHistory singleton to control navigation. Will generate a - // state change for time-traveling as we are using the react-router-redux package - //browserHistory.push("/") // logout to home page - dispatch(push("/")); - } else { - dispatch(logoutError()); - } - }) - .catch(response => { - if (response instanceof Error) { - // Something happened during logout that triggered an Error - console.log("Error", response.message); - } - }); - }; -} diff --git a/admin/src/User/user-constants.js b/admin/src/User/user-constants.js deleted file mode 100644 index 95b7062..0000000 --- a/admin/src/User/user-constants.js +++ /dev/null @@ -1,6 +0,0 @@ -export const LOGIN_SUCCESS_USER = "LOGIN_SUCCESS_USER" -export const LOGIN_EMAIL_ERROR_USER = "LOGIN_EMAIL_ERROR_USER" -export const LOGIN_ERROR_USER = "LOGIN_ERROR_USER" -export const LOGOUT_USER = "LOGOUT_USER" -export const LOGOUT_SUCCESS_USER = "LOGOUT_SUCCESS_USER" -export const LOGOUT_ERROR_USER = "LOGOUT_ERROR_USER" diff --git a/admin/src/User/user-reducer.js b/admin/src/User/user-reducer.js deleted file mode 100644 index e7ce7e1..0000000 --- a/admin/src/User/user-reducer.js +++ /dev/null @@ -1,55 +0,0 @@ -import { - LOGOUT_USER, - LOGOUT_SUCCESS_USER, - LOGOUT_ERROR_USER, - LOGIN_SUCCESS_USER, - LOGIN_ERROR_USER, - LOGIN_EMAIL_ERROR_USER -} from "./user-constants"; - -const user = ( - state = { - isWaiting: false, - authenticated: false, - userId: "" - }, - action -) => { - switch (action.type) { - case LOGIN_SUCCESS_USER: - return Object.assign({}, state, { - isWaiting: false, - authenticated: true, - ...action.data - }); - case LOGIN_EMAIL_ERROR_USER: - return Object.assign({}, state, { - isWaiting: false, - authenticated: false, - userId: action.data.userId - }); - case LOGIN_ERROR_USER: - return Object.assign({}, state, { - isWaiting: false, - authenticated: false - }); - case LOGOUT_USER: - return Object.assign({}, state, { isWaiting: true }); - case LOGOUT_SUCCESS_USER: - return Object.assign({}, state, { - isWaiting: false, - authenticated: false, - email: "", - userId: "" - }); - case LOGOUT_ERROR_USER: - return Object.assign({}, state, { - isWaiting: false, - authenticated: true - }); - default: - return state; - } -}; - -export default user;