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 ? (
-
- ) : (
-
- )}
-
- );
- }
+ var profileLink = process.env.REACT_APP_ACCOUNT_SERVER + "/profile";
+ return (
+
+
+
+ );
}
+
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,
})