diff --git a/my-app/.env b/my-app/.env
new file mode 100644
index 0000000000000000000000000000000000000000..32bb703810657387416ebc5762fbe7a7ef8b14f1
--- /dev/null
+++ b/my-app/.env
@@ -0,0 +1 @@
+REACT_APP_SERVER=https://127.0.0.1/api
\ No newline at end of file
diff --git a/my-app/package-lock.json b/my-app/package-lock.json
index 810df5b905522ce3958cf9aaabdd315f548f3f95..3c13fe8f42555f7be342b510082c6211b9a81279 100644
--- a/my-app/package-lock.json
+++ b/my-app/package-lock.json
@@ -13,7 +13,10 @@
         "@testing-library/user-event": "^13.5.0",
         "base-64": "^1.0.0",
         "bootstrap": "^5.2.3",
+        "dotenv": "^16.0.3",
         "history": "^5.3.0",
+        "os-browserify": "^0.3.0",
+        "path-browserify": "^1.0.1",
         "react": "^18.2.0",
         "react-bootstrap": "^2.7.0",
         "react-dom": "^18.2.0",
@@ -6814,11 +6817,11 @@
       }
     },
     "node_modules/dotenv": {
-      "version": "10.0.0",
-      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz",
-      "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==",
+      "version": "16.0.3",
+      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz",
+      "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==",
       "engines": {
-        "node": ">=10"
+        "node": ">=12"
       }
     },
     "node_modules/dotenv-expand": {
@@ -12461,6 +12464,11 @@
         "node": ">= 0.8.0"
       }
     },
+    "node_modules/os-browserify": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
+      "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A=="
+    },
     "node_modules/p-limit": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
@@ -12568,6 +12576,11 @@
         "tslib": "^2.0.3"
       }
     },
+    "node_modules/path-browserify": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
+      "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="
+    },
     "node_modules/path-exists": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@@ -14562,6 +14575,14 @@
         }
       }
     },
+    "node_modules/react-scripts/node_modules/dotenv": {
+      "version": "10.0.0",
+      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz",
+      "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==",
+      "engines": {
+        "node": ">=10"
+      }
+    },
     "node_modules/react-transition-group": {
       "version": "4.4.5",
       "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
diff --git a/my-app/package.json b/my-app/package.json
index 88f63f18f103ef482099b914e3d2ee9617701c96..49b97e8661bf54e3d2a3b57a54c3d1cda0baa9a7 100644
--- a/my-app/package.json
+++ b/my-app/package.json
@@ -8,7 +8,10 @@
     "@testing-library/user-event": "^13.5.0",
     "base-64": "^1.0.0",
     "bootstrap": "^5.2.3",
+    "dotenv": "^16.0.3",
     "history": "^5.3.0",
+    "os-browserify": "^0.3.0",
+    "path-browserify": "^1.0.1",
     "react": "^18.2.0",
     "react-bootstrap": "^2.7.0",
     "react-dom": "^18.2.0",
diff --git a/my-app/src/App.js b/my-app/src/App.js
index 3b198b214918673fd1bf645b5fd1dbfb2c7ea441..a99fdf59177835949bb2b16313f8d4a515c95a83 100644
--- a/my-app/src/App.js
+++ b/my-app/src/App.js
@@ -9,7 +9,6 @@ import CreateNewUserForm from './components/UserComponents/CreateNewUser';
 import { connect } from 'react-redux';
 import { Routes, Route, Navigate } from 'react-router-dom';
 
-
 const mapStateToProps = state => {
   return {
     user: state.AuthenticationReducer.user
diff --git a/my-app/src/actions/AuthenticationActions.js b/my-app/src/actions/AuthenticationActions.js
index 38289746021e04354883de721d4f181039fd390d..ebf589cea45fdddfd25d43c016dad6734c855041 100644
--- a/my-app/src/actions/AuthenticationActions.js
+++ b/my-app/src/actions/AuthenticationActions.js
@@ -7,6 +7,8 @@ export const AUTHENTICATION_PENDING = 'AUTHENTICATION_PENDING'
 export const AUTHENTICATION_SUCCESS = 'AUTHENTICATION_SUCCESS'
 export const AUTHENTICATION_ERROR = 'AUTHENTICATION_ERROR'
 
+const URL = process.env.REACT_APP_SERVER
+
 export function getShowLoginDialogAction() {
     return {
         type: SHOW_LOGIN_DIALOG
@@ -21,10 +23,9 @@ export function getHideLoginDialogAction() {
 }
 
 export function getLogoutAction() {
+    console.log('LOGOUT');
     return {
-        type: LOGOUT,
-        user: null,
-        accessToken: null
+        type: LOGOUT
     }
 }
 
@@ -80,7 +81,7 @@ function login(userID, password) {
     };
     console.log("here")
 
-    return fetch('https://localhost/api/authenticate', requestOptions)
+    return fetch(URL + '/authenticate', requestOptions)
         .then(handleResponse)
         .then(userSession => {
             return userSession
diff --git a/my-app/src/actions/DegreeCourseManagementActions.js b/my-app/src/actions/DegreeCourseManagementActions.js
index a8e4ac53ec127e7f77668c95b380f30bfce09191..643c717e05defc7256386042888072e4dea3f7f7 100644
--- a/my-app/src/actions/DegreeCourseManagementActions.js
+++ b/my-app/src/actions/DegreeCourseManagementActions.js
@@ -11,6 +11,7 @@ export const SHOW_DELETE_DEGREECOURSE_MODAL = 'SHOW_DELETE_DEGREECOURSE_MODAL'
 export const HIDE_DELETE_DEGREECOURSE_MODAL = 'HIDE_DELETE_DEGREECOURSE_MODAL'
 export const PRESS_EDIT_BUTTON = 'PRESS_EDIT_BUTTON';
 
+const URL = process.env.REACT_APP_SERVER
 
 export function getShowDeleteDegreeCourseModalAction(deleteModalData) {
     console.log(deleteModalData)
@@ -56,7 +57,7 @@ export function createNewDegreeCourse(degreeCourseData, token) {
         body: JSON.stringify(degreeCourseData)
     }
 
-    return fetch('https://localhost/api/degreeCourses', requestOptions)
+    return fetch(URL + '/degreeCourses', requestOptions)
         .then(response => {
             return response.json().then(body => {
                 if (response.status === 201) {
@@ -122,7 +123,7 @@ export function getAllDegreeCourses(token) {
         headers: { 'Authorization': token }
     };
     
-    return fetch('https://localhost/api/degreeCourses', requestOptions)
+    return fetch(URL + '/degreeCourses', requestOptions)
     .then(response => {
         return response.json().then(body => {
             if (response.status === 200) {
@@ -182,7 +183,7 @@ export function updateDegreeCourse(updateData, degreeCourseID, token) {
         body: JSON.stringify(updateData)
     }
 
-    return fetch(`https://localhost/api/degreeCourses/${degreeCourseID}`, requestOptions)
+    return fetch(URL + `/degreeCourses/${degreeCourseID}`, requestOptions)
         .then(response => {
             console.log(response)
             return response.json().then(body => {
@@ -247,7 +248,7 @@ export function deleteDegreeCourse(degreeCourseID, token) {
         }
     }
 
-    return fetch('https://localhost/api/degreeCourses/' + degreeCourseID, requestOptions)
+    return fetch(URL + '/degreeCourses/' + degreeCourseID, requestOptions)
         .then(response => {
             console.log(response)
             if (response.status === 204) {
diff --git a/my-app/src/actions/UserManagementActions.js b/my-app/src/actions/UserManagementActions.js
index f9bb4e1fb050a2548553cc2825f4f1760627db7a..090b28cea89decbbb5148b581377957ad104375b 100644
--- a/my-app/src/actions/UserManagementActions.js
+++ b/my-app/src/actions/UserManagementActions.js
@@ -10,7 +10,7 @@ export const EDIT_USER_ERROR = 'EDIT_USER_ERROR';
 export const EDIT_USER_SUCCESS = 'EDIT_USER_SUCCESS';
 export const PRESS_EDIT_BUTTON = 'PRESS_EDIT_BUTTON';
 
-
+const URL = process.env.REACT_APP_SERVER
 
 //Pending, Success, Error Actions
 
@@ -205,7 +205,7 @@ export function getAllUsers(token) {
         headers: { 'Authorization': token }
     };
 
-    return fetch('https://localhost/api/users', requestOptions)
+    return fetch(URL + '/users', requestOptions)
         .then(response => {
             return response.json().then(body => {
                 if (response.status === 200) {
@@ -224,7 +224,7 @@ export function getOneUser(userID, token) {
         headers: { 'Authorization': token }
     };
 
-    return fetch(`https://localhost/api/users/${userID}`, requestOptions)
+    return fetch(URL + `/users/${userID}`, requestOptions)
         .then(response => {
             return response.json().then(body => {
                 if (response.status === 200) {
@@ -249,7 +249,7 @@ export function createNewUser(userData, token) {
         body: JSON.stringify(userData)
     }
 
-    return fetch('https://localhost/api/users', requestOptions)
+    return fetch(URL + '/users', requestOptions)
         .then(response => {
             return response.json().then(body => {
                 if (response.status === 201) {
@@ -272,7 +272,7 @@ export function deleteUser(userID, token) {
         }
     }
 
-    return fetch('https://localhost/api/users/' + userID, requestOptions)
+    return fetch(URL + '/users/' + userID, requestOptions)
         .then(response => {
             console.log(response)
             if (response.status === 204) {
@@ -295,7 +295,7 @@ export function updateUser(updateData, userID, token) {
         body: JSON.stringify(updateData)
     }
 
-    return fetch(`https://localhost/api/users/${userID}`, requestOptions)
+    return fetch(URL + `/users/${userID}`, requestOptions)
         .then(response => {
             console.log(response)
             return response.json().then(body => {
diff --git a/my-app/src/components/DegreeCourseComponents/DegreeCourseItem.js b/my-app/src/components/DegreeCourseComponents/DegreeCourseItem.js
index ff147c542964528d7c41fa9b3459c8be4f8a4b02..6fb147f0d8664698da13500035ac09b23ff93ae8 100644
--- a/my-app/src/components/DegreeCourseComponents/DegreeCourseItem.js
+++ b/my-app/src/components/DegreeCourseComponents/DegreeCourseItem.js
@@ -2,17 +2,6 @@ import React, { Component } from "react";
 import Button from "react-bootstrap/esm/Button";
 import Card from 'react-bootstrap/Card';
 import ListGroup from 'react-bootstrap/ListGroup';
-import { connect } from "react-redux";
-import { bindActionCreators } from "redux";
-
-import * as degreeCourseManagementActions from '../../actions/DegreeCourseManagementActions'
-
-const mapStateToProps = state => {
-    return {
-        showDeleteDegreeCourseModal: state.DegreeCourseReducer.showDeleteDegreeCourseModal,
-        degreeCourseList: state.DegreeCourseReducer.degreeCourseList
-    };
-}
 
 class DegreeCourseItem extends Component {
     render() {
@@ -55,10 +44,4 @@ class DegreeCourseItem extends Component {
     }
 }
 
-const mapDispatchToProps = dispatch => bindActionCreators({
-    showDeleteDegreeCourseModalAction: degreeCourseManagementActions.getShowDeleteDegreeCourseModalAction,
-    hideDeleteDegreeCourseModalAction: degreeCourseManagementActions.getHideDeleteDegreeCourseModalAction
-}, dispatch)
-
-const ConnectedDegreeCourseItems = connect(mapStateToProps, mapDispatchToProps)(DegreeCourseItem)
-export default ConnectedDegreeCourseItems
\ No newline at end of file
+export default DegreeCourseItem
\ No newline at end of file
diff --git a/my-app/src/components/DegreeCourseComponents/DegreeCourseManagement.js b/my-app/src/components/DegreeCourseComponents/DegreeCourseManagement.js
index da7f04ef10f090dee9ad1ffe9fc6fc36dec7504a..af54ca7bd34b55ddb0891ec5e8c4654f8f8999ae 100644
--- a/my-app/src/components/DegreeCourseComponents/DegreeCourseManagement.js
+++ b/my-app/src/components/DegreeCourseComponents/DegreeCourseManagement.js
@@ -37,6 +37,7 @@ class DegreeCourseManagement extends Component {
         this.handleClose = this.handleClose.bind(this);
         this.handleSwitchToList = this.handleSwitchToList.bind(this);
         this.handleShowCreatePage = this.handleShowCreatePage.bind(this);
+        this.handleShowEditPage = this.handleShowEditPage.bind(this);
     }
 
     handleShowDeleteModal(e, dialogModalData) {
@@ -47,8 +48,9 @@ class DegreeCourseManagement extends Component {
 
     handleShowEditPage(e, degreeCourse) {
         e.preventDefault();
-        this.setState({ editingDegreeCourse: degreeCourse })
-        this.setState({ displayingPage: DISPLAY.EDIT })
+        this.setState(
+            { editingDegreeCourse: degreeCourse,
+            displayingPage: DISPLAY.EDIT })
     }
 
     handleShowCreatePage(e) {
@@ -78,7 +80,6 @@ class DegreeCourseManagement extends Component {
                     <DegreeCourseItem key={degreeCourse.id} degreeCourse={degreeCourse} handleShowDeleteModal={this.handleShowDeleteModal} handleShowEditPage={this.handleShowEditPage}/>
                 )
             })
-            console.log(degreeCourses)
             return degreeCourses
         }
     }
diff --git a/my-app/src/components/TopMenu.js b/my-app/src/components/TopMenu.js
index e53a635da89097c70ecbfec4e1a3475e7663e0f0..5fdf3767d562a13c9cb32674271e7cdfd78fb5f4 100644
--- a/my-app/src/components/TopMenu.js
+++ b/my-app/src/components/TopMenu.js
@@ -39,9 +39,10 @@ class TopMenu extends Component {
     }
 
     render() {
-        let OpenUserManagementPageButton;
+        let OpenManagementPageButtons;
+        console.log(this.props.isAdmin)
         if (this.props.isAdmin) {
-            OpenUserManagementPageButton =
+            OpenManagementPageButtons =
                 <>
                     <LinkContainer to="/userManagement" id="OpenUserManagementPageButton" onClick={this.handleUserManagementButtonAction}>
                         <Nav.Link>User-Management</Nav.Link>
@@ -65,7 +66,7 @@ class TopMenu extends Component {
                                 <LinkContainer to="/" id="OpenStartPageButton">
                                     <Nav.Link>Home</Nav.Link>
                                 </LinkContainer>
-                                {OpenUserManagementPageButton}
+                                {OpenManagementPageButtons}
                                 <NavDropdown title="Dropdown" id="basic-nav-dropdown">
                                     <NavDropdown.Item href="#action/3.1">Action</NavDropdown.Item>
                                     <NavDropdown.Item href="#action/3.2">
diff --git a/my-app/src/components/UserComponents/UserItem.js b/my-app/src/components/UserComponents/UserItem.js
index cb73a0320db21aaa1fac80b6e3ad7732fe19579e..2749e8007312eef495072f1efce408e6b37ccec8 100644
--- a/my-app/src/components/UserComponents/UserItem.js
+++ b/my-app/src/components/UserComponents/UserItem.js
@@ -2,91 +2,21 @@ import React, { Component } from "react";
 import Button from "react-bootstrap/esm/Button";
 import Card from 'react-bootstrap/Card';
 import ListGroup from 'react-bootstrap/ListGroup';
-import { connect } from "react-redux";
-import { bindActionCreators } from "redux";
-import DeleteUserModal from './DeleteUserModal'
-import EditUser from './EditUser'
-import CreateNewUser from './CreateNewUser'
-import addIcon from '../../icons/addIcon.png'
-
-
-import * as userManagementActions from '../../actions/UserManagementActions'
-
-const mapStateToProps = state => {
-    return {
-        showDeleteUserModal: state.UserManagementReducer.showDeleteUserModal,
-        userList: state.UserManagementReducer.userList
-    };
-}
-
-const DISPLAY = {
-    LIST: "list",
-    EDIT: "edit",
-    CREATE: "create"
-}
 
 class UserItem extends Component {
-    constructor(props) {
-        super(props);
-        this.state = {
-            displayingPage: DISPLAY.LIST,
-            editingUser: null
+    render() {
+        const user = this.props.user
+        let editButtonID = "UserItemEditButton" + user.userID
+        let deleteButtonID = "UserItemDeleteButton" + user.userID
+        let itemID = "UserItem" + user.userID
+        let dialogData = {
+            dialogID: "DeleteDialogUser" + user.userID,
+            name: user.firstName + " " + user.lastName,
+            userID: user.userID
         }
-
-        this.MapAllUsers = this.MapAllUsers.bind(this);
-        this.handleShowDeleteModal = this.handleShowDeleteModal.bind(this);
-        this.handleClose = this.handleClose.bind(this);
-        this.handleSwitchToList = this.handleSwitchToList.bind(this);
-        this.handleShowCreatePage = this.handleShowCreatePage.bind(this);
-    }
-
-    handleShowDeleteModal(e, dialogModalData) {
-        e.preventDefault();
-        const { showDeleteUserModalAction } = this.props
-        showDeleteUserModalAction(dialogModalData)
-    }
-
-    handleShowEditPage(e, user) {
-        e.preventDefault();
-        this.setState({ editingUser: user })
-        this.setState({ displayingPage: DISPLAY.EDIT })
-    }
-
-    handleShowCreatePage(e) {
-        e.preventDefault();
-        this.setState({ displayingPage: DISPLAY.CREATE })
-    }
-
-    handleClose() {
-        const { hideDeleteUserModalAction } = this.props;
-        hideDeleteUserModalAction();
-    }
-
-    handleSwitchToList(e) {
-        this.setState({ displayingPage: DISPLAY.LIST })
-    }
-
-    MapAllUsers() {
-        const allUsers = this.props.userList
-        if (allUsers) {
-            var showDeleteUserModal = this.props.showDeleteUserModal
-            if (showDeleteUserModal === undefined) {
-                showDeleteUserModal = false
-            }
-            console.log("deleteModal:" + showDeleteUserModal)
-            var users = allUsers.map(user => {
-                let editButtonID = "UserItemEditButton" + user.userID
-                let deleteButtonID = "UserItemDeleteButton" + user.userID
-                let itemID = "UserItem" + user.userID
-                let dialogData = {
-                    dialogID: "DeleteDialogUser" + user.userID,
-                    name: user.firstName + " " + user.lastName,
-                    userID: user.userID
-                }
-
-                return (
-                    <div key={user.userID}>
-                        <Card style={{ width: "18rem", background: '#ebebeb' }} id={itemID}>
+        return (
+            <div>
+                <Card style={{ width: "18rem", background: '#ebebeb' }} id={itemID}>
                             <Card.Header>{user.firstName} {user.lastName}</Card.Header>
                             <ListGroup variant="flush">
                                 <ListGroup.Item >User ID: {user.userID}</ListGroup.Item>
@@ -94,63 +24,16 @@ class UserItem extends Component {
                                 <ListGroup.Item >Last Name: {user.lastName}</ListGroup.Item>
                             </ListGroup>
                             <Card.Footer style={{ display: 'flex', justifyContent: 'space-evenly' }}>
-                                <Button variant="primary" onClick={(e) => this.handleShowEditPage(e, user)} id={editButtonID} >Edit</Button>
-                                <Button variant="primary" type="submit" onClick={(e) => this.handleShowDeleteModal(e, dialogData)} id={deleteButtonID} style={{ background: '#ffc800', color: 'black', border: 'none' }}>
+                                <Button variant="primary" onClick={(e) => this.props.handleShowEditPage(e, user)} id={editButtonID} >Edit</Button>
+                                <Button variant="primary" type="submit" onClick={(e) => this.props.handleShowDeleteModal(e, dialogData)} id={deleteButtonID} style={{ background: '#ffc800', color: 'black', border: 'none' }}>
                                     Delete
                                 </Button>
                             </Card.Footer>
                         </Card>
-                    </div>
-                )
-            })
-            console.log(users)
-            return users
-        }
-    }
-
-    render() {
-        var workspace
-        switch (this.state.displayingPage) {
-            case DISPLAY.LIST:
-                workspace =
-                    (<>
-                        <Button id="UserManagementPageCreateUserButton" onClick={this.handleShowCreatePage}>
-                            <img alt="Add-User-Button" src={addIcon} style={{ width: '2rem' }}></img>
-                        </Button>
-                        {this.MapAllUsers()}
-                        <DeleteUserModal />
-                    </>)
-                break
-            case DISPLAY.CREATE:
-                workspace = <CreateNewUser id="UserManagementPageCreateComponent" goBack={this.handleSwitchToList} />
-                break
-            case DISPLAY.EDIT:
-                workspace = <EditUser id="UserManagementPageEditComponent" goBack={this.handleSwitchToList} editUser={this.state.editingUser} />
-                break
-            default:
-                workspace = <Button onClick={this.handleShowCreatePage}>
-                    <img alt="Add-User-Button" src={addIcon} style={{ width: '2rem' }}></img>
-                </Button>
-                (<>
-                    <Button id="UserManagementPageCreateUserButton" onClick={this.handleShowCreatePage}>
-                        <img alt="Add-User-Button" src={addIcon} style={{ width: '2rem' }}></img>
-                    </Button>
-                    {this.MapAllUsers()} 
-                    <DeleteUserModal />
-                    </>)
-        }
-        return (
-            <div >
-                {workspace}
             </div>
         )
     }
 }
 
-const mapDispatchToProps = dispatch => bindActionCreators({
-    showDeleteUserModalAction: userManagementActions.getShowDeleteUserModalAction,
-    hideDeleteUserModalAction: userManagementActions.getHideDeleteUserModalAction
-}, dispatch)
 
-const ConnectedUserItems = connect(mapStateToProps, mapDispatchToProps)(UserItem)
-export default ConnectedUserItems
\ No newline at end of file
+export default UserItem
\ No newline at end of file
diff --git a/my-app/src/components/UserComponents/UserManagement.js b/my-app/src/components/UserComponents/UserManagement.js
index 620d1b3741bc42958dc716b0fdda32257126ffab..f7c80c9ddb3946288c1ade84dac1d6e3f233e999 100644
--- a/my-app/src/components/UserComponents/UserManagement.js
+++ b/my-app/src/components/UserComponents/UserManagement.js
@@ -1,17 +1,135 @@
 import React, { Component } from "react";
 import UserItem from "./UserItem";
+import Button from "react-bootstrap/esm/Button";
 
+import DeleteUserModal from './DeleteUserModal'
+import EditUser from './EditUser'
+import CreateNewUser from './CreateNewUser'
+import addIcon from '../../icons/addIcon.png'
+import { connect } from "react-redux";
+import { bindActionCreators } from "redux";
+
+import * as userManagementActions from '../../actions/UserManagementActions'
+
+
+const mapStateToProps = state => {
+    return {
+        showDeleteUserModal: state.UserManagementReducer.showDeleteUserModal,
+        userList: state.UserManagementReducer.userList
+    };
+}
+
+const DISPLAY = {
+    LIST: "list",
+    EDIT: "edit",
+    CREATE: "create"
+}
 
 class UserManagement extends Component {
+    constructor(props) {
+        super(props);
+        this.state = {
+            displayingPage: DISPLAY.LIST,
+            editingUser: null
+        }
+
+        this.MapAllUsers = this.MapAllUsers.bind(this);
+        this.handleShowDeleteModal = this.handleShowDeleteModal.bind(this);
+        this.handleClose = this.handleClose.bind(this);
+        this.handleSwitchToList = this.handleSwitchToList.bind(this);
+        this.handleShowCreatePage = this.handleShowCreatePage.bind(this);
+        this.handleShowEditPage = this.handleShowEditPage.bind(this);
+    }
+
+    handleShowDeleteModal(e, dialogModalData) {
+        e.preventDefault();
+        const { showDeleteUserModalAction } = this.props
+        showDeleteUserModalAction(dialogModalData)
+    }
+
+    handleShowEditPage(e, user) {
+        e.preventDefault();
+        this.setState({ editingUser: user })
+        this.setState({ displayingPage: DISPLAY.EDIT })
+    }
+
+    handleShowCreatePage(e) {
+        e.preventDefault();
+        this.setState({ displayingPage: DISPLAY.CREATE })
+    }
+
+    handleSwitchToList(e) {
+        this.setState({ displayingPage: DISPLAY.LIST })
+    }
+
+    handleClose() {
+        const { hideDeleteUserModalAction } = this.props;
+        hideDeleteUserModalAction();
+    }
+
+
+    MapAllUsers() {
+        const allUsers = this.props.userList
+        if (allUsers) {
+            var showDeleteUserModal = this.props.showDeleteUserModal
+            if (showDeleteUserModal === undefined) {
+                showDeleteUserModal = false
+            }
+            console.log("deleteModal:" + showDeleteUserModal)
+            var users = allUsers.map(user => {
+                return (
+                    <div key={user.userID}>
+                        <UserItem key={user.userID} user={user} handleShowDeleteModal={this.handleShowDeleteModal} handleShowEditPage={this.handleShowEditPage} />
+                    </div>
+                )
+            })
+            return users
+        }
+    }
+
     render() {
+        var workspace
+        switch (this.state.displayingPage) {
+            case DISPLAY.LIST:
+                workspace =
+                    (<>
+                        <Button id="UserManagementPageCreateUserButton" onClick={this.handleShowCreatePage}>
+                            <img alt="Add-User-Button" src={addIcon} style={{ width: '2rem' }}></img>
+                        </Button>
+                        {this.MapAllUsers()}
+                        <DeleteUserModal />
+                    </>)
+                break
+            case DISPLAY.CREATE:
+                workspace = <CreateNewUser id="UserManagementPageCreateComponent" goBack={this.handleSwitchToList} />
+                break
+            case DISPLAY.EDIT:
+                workspace = <EditUser id="UserManagementPageEditComponent" goBack={this.handleSwitchToList} editUser={this.state.editingUser} />
+                break
+            default:
+                workspace = <Button onClick={this.handleShowCreatePage}>
+                    <img alt="Add-User-Button" src={addIcon} style={{ width: '2rem' }}></img>
+                </Button>
+                (<>
+                    <Button id="UserManagementPageCreateUserButton" onClick={this.handleShowCreatePage}>
+                        <img alt="Add-User-Button" src={addIcon} style={{ width: '2rem' }}></img>
+                    </Button>
+                    {this.MapAllUsers()} 
+                    <DeleteUserModal />
+                    </>)
+        }
         return (
-            <div>
-                <div id="UserManagementPage" style={{ height: '50vw', backgroundColor: '#2b3648', padding: '10rem', display: 'flex', justifyContent: 'center' }}> 
-                    <UserItem />
-                </div>
+            <div id="UserManagementPage" style={{ height: '50vw', backgroundColor: '#2b3648', padding: '2rem' }}>
+                {workspace}
             </div>
         )
     }
 }
 
-export default UserManagement
\ No newline at end of file
+const mapDispatchToProps = dispatch => bindActionCreators({
+    showDeleteDegreeCourseModalAction: userManagementActions.getShowDeleteUserModalAction,
+    hideDeleteDegreeCourseModalAction: userManagementActions.getHideDeleteUserModalAction
+}, dispatch)
+
+const ConnectedUserManagement = connect(mapStateToProps, mapDispatchToProps)(UserManagement)
+export default ConnectedUserManagement
\ No newline at end of file
diff --git a/my-app/src/reducer/AuthenticationReducer.js b/my-app/src/reducer/AuthenticationReducer.js
index eaf1242e7cc823e4c10576dd8e1eaa3d19aeaf9d..cbf70b722f2be56ff664c8ed19214868395c9ab0 100644
--- a/my-app/src/reducer/AuthenticationReducer.js
+++ b/my-app/src/reducer/AuthenticationReducer.js
@@ -30,6 +30,8 @@ function AuthenticationReducer(state = initialState, action) {
                 error: null
             }
         case authenticationActions.AUTHENTICATION_SUCCESS:
+            console.log("Action: " + JSON.stringify(action));
+
             return {
                 ...state,
                 showLoginDialog: false,
@@ -48,7 +50,8 @@ function AuthenticationReducer(state = initialState, action) {
             return {
                 ...state,
                 user: null,
-                accessToken: null
+                accessToken: null,
+                isAdmin: false
             }
         default:
             return state;