diff --git a/admin/src/App/App.js b/admin/src/App/App.js index 2fbaefe..c328010 100644 --- a/admin/src/App/App.js +++ b/admin/src/App/App.js @@ -1,5 +1,5 @@ import React, { Component } from "react" -import NavigationContainer from "./NavigationContainer" +import Navigation from "./Navigation" import { Routes, Route } from 'react-router-dom'; import Restricted from "./Restricted" @@ -15,7 +15,7 @@ const App = (params) => { const {store} = params; return (
- + } /> } /> diff --git a/admin/src/App/Navigation.js b/admin/src/App/Navigation.js index 8db9a39..d5c4290 100644 --- a/admin/src/App/Navigation.js +++ b/admin/src/App/Navigation.js @@ -1,6 +1,8 @@ -import React, { Component } from "react"; import { Link } from "react-router-dom"; import { Menu, Dropdown } from "semantic-ui-react"; +import React, { useEffect } from "react"; +import { useSelector, useDispatch } from 'react-redux' +import { logoutUser } from "../features/user/userSlice"; const navStyle = { marginBottom: "30px" @@ -9,47 +11,40 @@ const blankStyle = { marginBottom: "50px" }; -class Navigation extends Component { - constructor(props) { - super(props); - this._logout = this._logout.bind(this); - } +const Navigation = (props) => { + const dispatch = useDispatch(); + const { email } = useSelector((state) => state.user); - _logout = event => { + const logout = event => { event.preventDefault(); - this.props.manualLogout(); + dispatch(logoutUser({})); }; - render() { - var profileLink = process.env.REACT_APP_ACCOUNT_SERVER + "/profile"; - return ( -
- {this.props.user.authenticated ? ( - - - {process.env.REACT_APP_SITE_NAME} - - - - Systems - - - About - - - - Profile - Logout - - - - - ) : ( -
- )} -
- ); - } + var profileLink = process.env.REACT_APP_ACCOUNT_SERVER + "/profile"; + return ( +
+ + + {process.env.REACT_APP_SITE_NAME} + + + + Systems + + + About + + + + Profile + Logout + + + + +
+ ); } + export default Navigation; diff --git a/admin/src/App/Restricted.js b/admin/src/App/Restricted.js index 1344a19..d99a24f 100644 --- a/admin/src/App/Restricted.js +++ b/admin/src/App/Restricted.js @@ -1,16 +1,7 @@ // in src/restricted.js //import React, { Component } from 'react'; -import React, { useEffect, useLayoutEffect, useState, useRef, useCallback, useMemo } from "react"; +import React, { useEffect} from "react"; import { useSelector, useDispatch } from 'react-redux' -import * as types from "../User/user-constants"; -import axios from "axios"; -import { - Routes, - Route, - Link, - Navigate, - Outlet, -} from 'react-router-dom'; import { authenticateUser } from "../features/user/userSlice"; /** * Higher-order component (HOC) to wrap restricted pages diff --git a/admin/src/System/System.js b/admin/src/System/System.js index d986ca4..33ba9bb 100644 --- a/admin/src/System/System.js +++ b/admin/src/System/System.js @@ -3,9 +3,7 @@ import { Link, useLocation, useParams, useNavigate } from 'react-router-dom'; import ListTalkgroups from "../Talkgroups/ListTalkgroups.js"; import MessageBox from "../Components/Message.js"; import ListGroups from "../Group/ListGroups.js"; -import GroupModal from "../Group/GroupModalContainer.js"; -import UpdatePermissionModal from "../Permission/UpdatePermissionModalContainer.js"; -import AddPermissionModal from "../Permission/AddPermissionModalContainer.js"; +import GroupModal from "../Group/GroupModal.js"; import ErrorChart from "./ResponsiveErrorChart" import CallChart from "./ResponsiveCallChart" import { useGetSystemsQuery, useGetTalkgroupsQuery, useGetGroupsQuery, useGetErrorsQuery, useDeleteGroupMutation, useDeleteSystemMutation, useImportTalkgroupsMutation, useSaveGroupOrderMutation } from '../features/api/apiSlice' diff --git a/admin/src/features/user/userSlice.js b/admin/src/features/user/userSlice.js index 8427cd0..ae41341 100644 --- a/admin/src/features/user/userSlice.js +++ b/admin/src/features/user/userSlice.js @@ -40,7 +40,9 @@ export const userSlice = createSlice({ isWaiting: false, authenticated: false, hasAuthenticated: false, - userId: "" + userId: "", + admin: false, + email: "", }, reducers: { increment: (state) => { @@ -58,6 +60,8 @@ export const userSlice = createSlice({ state.authenticated = true; state.hasAuthenticated = true; state.userId = payload.user.userId; + state.admin = payload.user.admin; + state.email = payload.user.email; } else { state.authenticated = false; state.hasAuthenticated = true; diff --git a/admin/src/redux-router/reducers.js b/admin/src/redux-router/reducers.js index ecde4e5..494a78c 100644 --- a/admin/src/redux-router/reducers.js +++ b/admin/src/redux-router/reducers.js @@ -2,24 +2,12 @@ // from https://github.com/supasate/connected-react-router import { combineReducers } from 'redux' import { createRouterReducer } from '@lagunovsky/redux-react-router' -import systemReducer from "../System/system-reducer" -import talkgroupReducer from "../Talkgroups/talkgroup-reducer" -import groupReducer from "../Group/group-reducer" -import errorReducer from "../System/error-reducer" -import statisticReducer from "../System/statistic-reducer" -import permissionReducer from "../Permission/permission-reducer" import { userSlice, userReducer } from '../features/user/userSlice' import {apiSlice} from "../features/api/apiSlice" const createRootReducer = (history) => combineReducers({ router: createRouterReducer (history), - system: systemReducer, - statistic: statisticReducer, - talkgroup: talkgroupReducer, - group: groupReducer, user: userReducer, - error: errorReducer, - permission: permissionReducer, [apiSlice.reducerPath]: apiSlice.reducer, })