mirror of
https://github.com/openmhz/trunk-server.git
synced 2026-11-14 09:48:10 -05:00
fixed it
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
import React, { Component } from "react"
|
import React, { Component } from "react"
|
||||||
import NavigationContainer from "./NavigationContainer"
|
import Navigation from "./Navigation"
|
||||||
import { Routes, Route } from 'react-router-dom';
|
import { Routes, Route } from 'react-router-dom';
|
||||||
|
|
||||||
import Restricted from "./Restricted"
|
import Restricted from "./Restricted"
|
||||||
@@ -15,7 +15,7 @@ const App = (params) => {
|
|||||||
const {store} = params;
|
const {store} = params;
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<NavigationContainer />
|
<Navigation/>
|
||||||
<Routes>
|
<Routes>
|
||||||
<Route path="/about" element={ <Restricted><About/></Restricted>} />
|
<Route path="/about" element={ <Restricted><About/></Restricted>} />
|
||||||
<Route path="/system/:shortName" element={ <Restricted><System/></Restricted>} />
|
<Route path="/system/:shortName" element={ <Restricted><System/></Restricted>} />
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
import React, { Component } from "react";
|
|
||||||
import { Link } from "react-router-dom";
|
import { Link } from "react-router-dom";
|
||||||
import { Menu, Dropdown } from "semantic-ui-react";
|
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 = {
|
const navStyle = {
|
||||||
marginBottom: "30px"
|
marginBottom: "30px"
|
||||||
@@ -9,47 +11,40 @@ const blankStyle = {
|
|||||||
marginBottom: "50px"
|
marginBottom: "50px"
|
||||||
};
|
};
|
||||||
|
|
||||||
class Navigation extends Component {
|
const Navigation = (props) => {
|
||||||
constructor(props) {
|
const dispatch = useDispatch();
|
||||||
super(props);
|
const { email } = useSelector((state) => state.user);
|
||||||
this._logout = this._logout.bind(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
_logout = event => {
|
const logout = event => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
this.props.manualLogout();
|
dispatch(logoutUser({}));
|
||||||
};
|
};
|
||||||
|
|
||||||
render() {
|
var profileLink = process.env.REACT_APP_ACCOUNT_SERVER + "/profile";
|
||||||
var profileLink = process.env.REACT_APP_ACCOUNT_SERVER + "/profile";
|
return (
|
||||||
return (
|
<div>
|
||||||
<div>
|
<Menu style={navStyle}>
|
||||||
{this.props.user.authenticated ? (
|
<Menu.Item name="systems" header>
|
||||||
<Menu style={navStyle}>
|
{process.env.REACT_APP_SITE_NAME}
|
||||||
<Menu.Item name="systems" header>
|
</Menu.Item>
|
||||||
{process.env.REACT_APP_SITE_NAME}
|
<Menu.Menu position="right">
|
||||||
</Menu.Item>
|
<Link to="/list-systems">
|
||||||
<Menu.Menu position="right">
|
<Menu.Item name="systems"> Systems</Menu.Item>
|
||||||
<Link to="/list-systems">
|
</Link>
|
||||||
<Menu.Item name="systems"> Systems</Menu.Item>
|
<Link to="/about">
|
||||||
</Link>
|
<Menu.Item name="about">About</Menu.Item>
|
||||||
<Link to="/about">
|
</Link>
|
||||||
<Menu.Item name="about">About</Menu.Item>
|
<Dropdown item text={ email }>
|
||||||
</Link>
|
<Dropdown.Menu>
|
||||||
<Dropdown item text={this.props.user.email}>
|
<Dropdown.Item href={profileLink}>Profile</Dropdown.Item>
|
||||||
<Dropdown.Menu>
|
<Dropdown.Item onClick={logout}>Logout</Dropdown.Item>
|
||||||
<Dropdown.Item href={profileLink}>Profile</Dropdown.Item>
|
</Dropdown.Menu>
|
||||||
<Dropdown.Item onClick={this._logout}>Logout</Dropdown.Item>
|
</Dropdown>
|
||||||
</Dropdown.Menu>
|
</Menu.Menu>
|
||||||
</Dropdown>
|
</Menu>
|
||||||
</Menu.Menu>
|
</div>
|
||||||
</Menu>
|
);
|
||||||
) : (
|
|
||||||
<div style={blankStyle} />
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export default Navigation;
|
export default Navigation;
|
||||||
|
|||||||
@@ -1,16 +1,7 @@
|
|||||||
// in src/restricted.js
|
// in src/restricted.js
|
||||||
//import React, { Component } from 'react';
|
//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 { 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";
|
import { authenticateUser } from "../features/user/userSlice";
|
||||||
/**
|
/**
|
||||||
* Higher-order component (HOC) to wrap restricted pages
|
* Higher-order component (HOC) to wrap restricted pages
|
||||||
|
|||||||
@@ -3,9 +3,7 @@ import { Link, useLocation, useParams, useNavigate } from 'react-router-dom';
|
|||||||
import ListTalkgroups from "../Talkgroups/ListTalkgroups.js";
|
import ListTalkgroups from "../Talkgroups/ListTalkgroups.js";
|
||||||
import MessageBox from "../Components/Message.js";
|
import MessageBox from "../Components/Message.js";
|
||||||
import ListGroups from "../Group/ListGroups.js";
|
import ListGroups from "../Group/ListGroups.js";
|
||||||
import GroupModal from "../Group/GroupModalContainer.js";
|
import GroupModal from "../Group/GroupModal.js";
|
||||||
import UpdatePermissionModal from "../Permission/UpdatePermissionModalContainer.js";
|
|
||||||
import AddPermissionModal from "../Permission/AddPermissionModalContainer.js";
|
|
||||||
import ErrorChart from "./ResponsiveErrorChart"
|
import ErrorChart from "./ResponsiveErrorChart"
|
||||||
import CallChart from "./ResponsiveCallChart"
|
import CallChart from "./ResponsiveCallChart"
|
||||||
import { useGetSystemsQuery, useGetTalkgroupsQuery, useGetGroupsQuery, useGetErrorsQuery, useDeleteGroupMutation, useDeleteSystemMutation, useImportTalkgroupsMutation, useSaveGroupOrderMutation } from '../features/api/apiSlice'
|
import { useGetSystemsQuery, useGetTalkgroupsQuery, useGetGroupsQuery, useGetErrorsQuery, useDeleteGroupMutation, useDeleteSystemMutation, useImportTalkgroupsMutation, useSaveGroupOrderMutation } from '../features/api/apiSlice'
|
||||||
|
|||||||
@@ -40,7 +40,9 @@ export const userSlice = createSlice({
|
|||||||
isWaiting: false,
|
isWaiting: false,
|
||||||
authenticated: false,
|
authenticated: false,
|
||||||
hasAuthenticated: false,
|
hasAuthenticated: false,
|
||||||
userId: ""
|
userId: "",
|
||||||
|
admin: false,
|
||||||
|
email: "",
|
||||||
},
|
},
|
||||||
reducers: {
|
reducers: {
|
||||||
increment: (state) => {
|
increment: (state) => {
|
||||||
@@ -58,6 +60,8 @@ export const userSlice = createSlice({
|
|||||||
state.authenticated = true;
|
state.authenticated = true;
|
||||||
state.hasAuthenticated = true;
|
state.hasAuthenticated = true;
|
||||||
state.userId = payload.user.userId;
|
state.userId = payload.user.userId;
|
||||||
|
state.admin = payload.user.admin;
|
||||||
|
state.email = payload.user.email;
|
||||||
} else {
|
} else {
|
||||||
state.authenticated = false;
|
state.authenticated = false;
|
||||||
state.hasAuthenticated = true;
|
state.hasAuthenticated = true;
|
||||||
|
|||||||
@@ -2,24 +2,12 @@
|
|||||||
// from https://github.com/supasate/connected-react-router
|
// from https://github.com/supasate/connected-react-router
|
||||||
import { combineReducers } from 'redux'
|
import { combineReducers } from 'redux'
|
||||||
import { createRouterReducer } from '@lagunovsky/redux-react-router'
|
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 { userSlice, userReducer } from '../features/user/userSlice'
|
||||||
import {apiSlice} from "../features/api/apiSlice"
|
import {apiSlice} from "../features/api/apiSlice"
|
||||||
|
|
||||||
const createRootReducer = (history) => combineReducers({
|
const createRootReducer = (history) => combineReducers({
|
||||||
router: createRouterReducer (history),
|
router: createRouterReducer (history),
|
||||||
system: systemReducer,
|
|
||||||
statistic: statisticReducer,
|
|
||||||
talkgroup: talkgroupReducer,
|
|
||||||
group: groupReducer,
|
|
||||||
user: userReducer,
|
user: userReducer,
|
||||||
error: errorReducer,
|
|
||||||
permission: permissionReducer,
|
|
||||||
[apiSlice.reducerPath]: apiSlice.reducer,
|
[apiSlice.reducerPath]: apiSlice.reducer,
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user