From f7ce9e404ff007faa1fd467c08abacb28daa28dc Mon Sep 17 00:00:00 2001 From: Zane Claes Date: Tue, 6 Oct 2020 16:21:13 -0600 Subject: [PATCH] Working user auth --- .makerverse.default | 2 - .makerverse.docker | 2 - package.json | 3 - src/app/api/index.js | 37 -- src/app/components/ProtectedRoute/index.jsx | 18 +- src/app/containers/Header/Header.jsx | 16 +- .../containers/Home/CreateWorkspace/index.jsx | 2 +- src/app/containers/Login/Callback.jsx | 62 +++ src/app/containers/Login/Login.jsx | 277 +++------- .../containers/Settings/General/General.jsx | 7 - src/app/containers/Settings/Settings.jsx | 18 +- src/app/i18n/cs/resource.json | 11 +- src/app/i18n/de/resource.json | 11 +- src/app/i18n/en/resource.json | 11 +- src/app/i18n/es/resource.json | 11 +- src/app/i18n/fr/resource.json | 11 +- src/app/i18n/hu/resource.json | 11 +- src/app/i18n/it/resource.json | 11 +- src/app/i18n/ja/resource.json | 11 +- src/app/i18n/nl/resource.json | 11 +- src/app/i18n/pt-br/resource.json | 11 +- src/app/i18n/ru/resource.json | 11 +- src/app/i18n/tr/resource.json | 11 +- src/app/i18n/zh-cn/resource.json | 11 +- src/app/i18n/zh-tw/resource.json | 11 +- src/app/index.jsx | 58 +-- src/app/lib/auth.js | 126 ++++- src/app/lib/user.js | 80 --- src/app/lib/workspaces.jsx | 17 - src/app/store/redux.js | 3 - src/app/widgets/Connection/index.jsx | 7 +- src/app/widgets/Visualizer/Visualizer.jsx | 3 +- src/package.json | 5 +- src/server-cli.js | 2 - src/server/access-control.js | 184 +++++-- src/server/api/api.users.js | 480 ++++++++++-------- src/server/app.js | 74 +-- src/server/config/settings.base.js | 6 - src/server/index.js | 21 - src/server/services/cncengine/CNCEngine.js | 36 +- 40 files changed, 761 insertions(+), 939 deletions(-) create mode 100644 src/app/containers/Login/Callback.jsx delete mode 100644 src/app/lib/user.js diff --git a/.makerverse.default b/.makerverse.default index 7e7c7de17..3e06eeabd 100644 --- a/.makerverse.default +++ b/.makerverse.default @@ -1,6 +1,4 @@ { "watchDirectory": "", - "accessTokenLifetime": "30d", - "allowRemoteAccess": false, "workspaces": [] } \ No newline at end of file diff --git a/.makerverse.docker b/.makerverse.docker index 6c9750ad2..bfc43f3e1 100644 --- a/.makerverse.docker +++ b/.makerverse.docker @@ -1,7 +1,5 @@ { "watchDirectory": "/home/node/gcode", - "accessTokenLifetime": "30d", - "allowRemoteAccess": true, "workspaces": [], "mountPoints": [ { diff --git a/package.json b/package.json index 7f87fc55c..1ab66dfd3 100644 --- a/package.json +++ b/package.json @@ -182,7 +182,6 @@ "expand-tilde": "~2.0.2", "expr-eval": "~1.2.2", "express": "~4.16.4", - "express-jwt": "~5.3.1", "express-session": "~1.16.1", "final-form": "~4.12.0", "font-awesome": "~4.7.0", @@ -202,7 +201,6 @@ "is-electron": "~2.2.0", "jimp": "~0.6.1", "js-polyfills": "~0.1.42", - "jsonwebtoken": "~8.5.1", "jsuri": "~1.3.1", "keycode": "~2.2.0", "lodash": "~4.17.11", @@ -259,7 +257,6 @@ "shortid": "~2.2.14", "socket.io": "~2.2.0", "socket.io-client": "~2.2.0", - "socketio-jwt": "~4.5.0", "sortablejs": "~1.9.0", "spawn-default-shell": "~2.0.0", "styled-components": "~3.4.9", diff --git a/src/app/api/index.js b/src/app/api/index.js index fd998b3a0..6d65e3b23 100644 --- a/src/app/api/index.js +++ b/src/app/api/index.js @@ -27,44 +27,10 @@ const noCache = (request) => { } }; -export const apirequest = superagentUse(superagent); -apirequest.use(noCache); - export const authrequest = superagentUse(superagent); authrequest.use(bearer); authrequest.use(noCache); -// -// Authentication -// -const signin = (options) => new Promise((resolve, reject) => { - // const { token, username, password } = { ...options }; - - // const requestedUrl = new URLSearchParams(window.location.search).get('ReturnUrl'); - // args.returnUrl = requestedUrl || (await ).url; - // const args = { username, password }; - - // fetch(`${owsApi}/auth/login`, { - // method: 'POST', - // credentials: 'include', - // headers: { - // 'Content-Type': 'application/json', - // }, - // body: JSON.stringify(args), - // }); - - // authrequest - // .post('/api/signin') - // .send({ token, name, password }) - // .end((err, res) => { - // if (err) { - // reject(res); - // } else { - // resolve(res); - // } - // }); -}); - // // Latest Version // @@ -710,9 +676,6 @@ export default { fetchGCode, downloadGCode, - // Authentication - signin, - // Controllers controllers, diff --git a/src/app/components/ProtectedRoute/index.jsx b/src/app/components/ProtectedRoute/index.jsx index 96857fc37..55ae9a96b 100644 --- a/src/app/components/ProtectedRoute/index.jsx +++ b/src/app/components/ProtectedRoute/index.jsx @@ -1,5 +1,6 @@ import React from 'react'; // import PropTypes from 'prop-types'; +import auth from 'app/lib/auth'; import { connect } from 'react-redux'; import { Route, Redirect, withRouter } from 'react-router-dom'; import log from 'app/lib/log'; @@ -8,8 +9,7 @@ const ProtectedRoute = ({ component: Component, ...rest }) => ( { - if (props.user) { - log.debug('User is authenticated.', props.user); + if (auth.isAuthenticated()) { return Component ? : null; } @@ -39,16 +39,4 @@ ProtectedRoute.propTypes = { ...withRouter.propTypes, }; -function mapStateToProps(state) { - return { - user: state.oidc.user - }; -} - -function mapDispatchToProps(dispatch) { - return { - dispatch - }; -} - -export default connect(mapStateToProps, mapDispatchToProps)(ProtectedRoute); +export default connect()(ProtectedRoute); diff --git a/src/app/containers/Header/Header.jsx b/src/app/containers/Header/Header.jsx index 539de145d..ee09aadf3 100644 --- a/src/app/containers/Header/Header.jsx +++ b/src/app/containers/Header/Header.jsx @@ -12,8 +12,7 @@ import Space from 'app/components/Space'; import combokeys from 'app/lib/combokeys'; import i18n from 'app/lib/i18n'; import log from 'app/lib/log'; -import * as user from 'app/lib/user'; -import store from 'app/store'; +import auth from 'app/lib/auth'; import Workspaces from 'app/lib/workspaces'; import settings from 'app/config/settings'; import styles from './index.styl'; @@ -244,9 +243,7 @@ class Header extends PureComponent { render() { const { history, location } = this.props; const { pushPermission, commands, runningTasks, updateAvailable, latestVersion, lastUpdate } = this.state; - const sessionEnabled = store.get('session.enabled'); - const signedInName = store.get('session.name'); - const hideUserDropdown = !sessionEnabled; + const signedInName = auth.user ? auth.user.username : '?'; const showCommands = commands.length > 0; const workspace = Workspaces.findByPath(location.pathname); const updateMsg = i18n._('A new version of {{name}} is available', { name: settings.productName }) + '. ' + @@ -301,9 +298,6 @@ class Header extends PureComponent {