From 9dd5ecf78da02b851fcec20b8fbec7154f43ec2d Mon Sep 17 00:00:00 2001 From: soupette Date: Thu, 14 May 2020 16:45:10 +0200 Subject: [PATCH] Add renew token and fix design Signed-off-by: soupette --- packages/strapi-admin/admin/src/app.js | 10 ++++++++ .../admin/src/containers/App/index.js | 24 +++++++++++++++---- .../src/containers/AuthPage/CustomLabel.js | 5 ++-- .../admin/src/containers/AuthPage/Input.js | 1 + .../admin/src/containers/AuthPage/Wrapper.js | 11 +++++---- .../AuthPage/components/Login/index.js | 2 +- .../AuthPage/components/Section/index.js | 11 +++++++++ .../admin/src/containers/AuthPage/forms.js | 1 + .../admin/src/containers/AuthPage/index.js | 18 ++++---------- .../AuthPage/utils/formatErrorFromRequest.js | 1 + .../lib/src/utils/auth.js | 6 +++++ 11 files changed, 62 insertions(+), 28 deletions(-) diff --git a/packages/strapi-admin/admin/src/app.js b/packages/strapi-admin/admin/src/app.js index 2da40b6ce6..51be6b89b6 100644 --- a/packages/strapi-admin/admin/src/app.js +++ b/packages/strapi-admin/admin/src/app.js @@ -130,6 +130,15 @@ const unlockApp = () => { dispatch(unfreezeApp()); }; +const lockAppWithOverlay = () => { + const overlayblockerParams = { + children:
, + noGradient: true, + }; + + lockApp(overlayblockerParams); +}; + window.strapi = Object.assign(window.strapi || {}, { node: MODE || 'host', env: NODE_ENV, @@ -165,6 +174,7 @@ window.strapi = Object.assign(window.strapi || {}, { window.navigator.userLanguage || 'en', lockApp, + lockAppWithOverlay, unlockApp, injectReducer, injectSaga, diff --git a/packages/strapi-admin/admin/src/containers/App/index.js b/packages/strapi-admin/admin/src/containers/App/index.js index b9f7fd6829..7524cfd197 100644 --- a/packages/strapi-admin/admin/src/containers/App/index.js +++ b/packages/strapi-admin/admin/src/containers/App/index.js @@ -14,11 +14,9 @@ import React, { useEffect, useRef, useState } from 'react'; import PropTypes from 'prop-types'; import { Switch, Route } from 'react-router-dom'; - import { connect } from 'react-redux'; import { bindActionCreators, compose } from 'redux'; -import { LoadingIndicatorPage, request } from 'strapi-helper-plugin'; - +import { LoadingIndicatorPage, auth, request } from 'strapi-helper-plugin'; import GlobalStyle from '../../components/GlobalStyle'; import Admin from '../Admin'; import AuthPage from '../AuthPage'; @@ -27,9 +25,7 @@ import NotFoundPage from '../NotFoundPage'; import NotificationProvider from '../NotificationProvider'; import PrivateRoute from '../PrivateRoute'; import Theme from '../Theme'; - import { Content, Wrapper } from './components'; - import { getDataSucceeded } from './actions'; function App(props) { @@ -39,6 +35,24 @@ function App(props) { useEffect(() => { const getData = async () => { + const currentToken = auth.getToken(); + + if (currentToken) { + try { + const { + data: { token }, + } = await request('/admin/renew-token', { + method: 'POST', + body: { token: currentToken }, + }); + auth.updateToken(token); + } catch (err) { + // Refresh app + auth.clearAppStorage(); + window.location.reload(); + } + } + try { const requestURL = '/users-permissions/init'; diff --git a/packages/strapi-admin/admin/src/containers/AuthPage/CustomLabel.js b/packages/strapi-admin/admin/src/containers/AuthPage/CustomLabel.js index c6d77192dd..8dcbdfe1b8 100644 --- a/packages/strapi-admin/admin/src/containers/AuthPage/CustomLabel.js +++ b/packages/strapi-admin/admin/src/containers/AuthPage/CustomLabel.js @@ -1,10 +1,9 @@ +// TODO DELETE THIS FILE WHEN AUTH FINISHED import React, { memo } from 'react'; import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; -const CustomLabel = ({ id, values }) => ( - -); +const CustomLabel = ({ id, values }) => ; CustomLabel.propTypes = { id: PropTypes.string.isRequired, diff --git a/packages/strapi-admin/admin/src/containers/AuthPage/Input.js b/packages/strapi-admin/admin/src/containers/AuthPage/Input.js index 3fb9218024..c6de551b42 100644 --- a/packages/strapi-admin/admin/src/containers/AuthPage/Input.js +++ b/packages/strapi-admin/admin/src/containers/AuthPage/Input.js @@ -1,3 +1,4 @@ +// TODO DELETE THIS FILE WHEN AUTH FINISHED import React, { memo } from 'react'; import { FormattedMessage } from 'react-intl'; import PropTypes from 'prop-types'; diff --git a/packages/strapi-admin/admin/src/containers/AuthPage/Wrapper.js b/packages/strapi-admin/admin/src/containers/AuthPage/Wrapper.js index 94dce323a1..4976a6f980 100644 --- a/packages/strapi-admin/admin/src/containers/AuthPage/Wrapper.js +++ b/packages/strapi-admin/admin/src/containers/AuthPage/Wrapper.js @@ -1,3 +1,4 @@ +// TODO DELETE THIS FILE WHEN AUTH FINISHED import styled from 'styled-components'; // import Background from '../../assets/images/background_empty.svg'; @@ -16,11 +17,11 @@ const Wrapper = styled.div` // -webkit-font-smoothing: antialiased; // .wrapper { -// height: 22.1rem; -// width: 685px; -// text-align: center; -// background-image: url(${Background}); -// background-position-x: center; +// height: 22.1rem; +// width: 685px; +// text-align: center; +// background-image: url(${Background}); +// background-position-x: center; // font-size: 1.4rem; // font-family: Lato; // } diff --git a/packages/strapi-admin/admin/src/containers/AuthPage/components/Login/index.js b/packages/strapi-admin/admin/src/containers/AuthPage/components/Login/index.js index 7c2de61c08..bcb65eb592 100644 --- a/packages/strapi-admin/admin/src/containers/AuthPage/components/Login/index.js +++ b/packages/strapi-admin/admin/src/containers/AuthPage/components/Login/index.js @@ -18,7 +18,7 @@ const Login = ({ formErrors, modifiedData, onChange, onSubmit, requestError }) =
-
+
diff --git a/packages/strapi-admin/admin/src/containers/AuthPage/components/Section/index.js b/packages/strapi-admin/admin/src/containers/AuthPage/components/Section/index.js index fd825e3cc1..0c1056e4e2 100644 --- a/packages/strapi-admin/admin/src/containers/AuthPage/components/Section/index.js +++ b/packages/strapi-admin/admin/src/containers/AuthPage/components/Section/index.js @@ -1,10 +1,21 @@ import styled from 'styled-components'; +import Background from '../../../../assets/images/background_empty.svg'; + +/* eslint-disable indent */ const Section = styled.section` text-align: ${({ textAlign }) => textAlign}; + ${({ withBackground }) => + withBackground && + ` + background-image: url(${Background}); + background-position-x: center; + background-position-Y: center; + `} `; Section.defaultProps = { + withBackground: false, textAlign: 'initial', }; diff --git a/packages/strapi-admin/admin/src/containers/AuthPage/forms.js b/packages/strapi-admin/admin/src/containers/AuthPage/forms.js index 26fe986ad4..ab31c04f86 100644 --- a/packages/strapi-admin/admin/src/containers/AuthPage/forms.js +++ b/packages/strapi-admin/admin/src/containers/AuthPage/forms.js @@ -1,3 +1,4 @@ +// TODO DELETE THIS FILE WHEN AUTH FINISHED import * as yup from 'yup'; import { translatedErrors } from 'strapi-helper-plugin'; diff --git a/packages/strapi-admin/admin/src/containers/AuthPage/index.js b/packages/strapi-admin/admin/src/containers/AuthPage/index.js index 4813dbaacc..2041fd643d 100644 --- a/packages/strapi-admin/admin/src/containers/AuthPage/index.js +++ b/packages/strapi-admin/admin/src/containers/AuthPage/index.js @@ -2,19 +2,8 @@ import React, { useEffect, useReducer } from 'react'; import { Padded } from '@buffetjs/core'; import axios from 'axios'; // import PropTypes from 'prop-types'; -import { - get, - // isEmpty, - omit, - // set, - upperFirst, -} from 'lodash'; -import { - // Link, - Redirect, - useRouteMatch, - useHistory, -} from 'react-router-dom'; +import { get, omit, upperFirst } from 'lodash'; +import { Redirect, useRouteMatch, useHistory } from 'react-router-dom'; import { auth } from 'strapi-helper-plugin'; import NavTopRightWrapper from '../../components/NavTopRightWrapper'; import PageTitle from '../../components/PageTitle'; @@ -86,7 +75,6 @@ const AuthPage = () => { }); // TODO register and other views logic - console.log(token); auth.setToken(token, modifiedData.rememberMe); auth.setUserInfo(user, modifiedData.rememberMe); @@ -134,6 +122,8 @@ const AuthPage = () => { export default AuthPage; +// TODO Remove comments when auth feature is finished + // import React, { memo, useEffect, useReducer, useRef } from 'react'; // import PropTypes from 'prop-types'; // import { get, isEmpty, omit, set, upperFirst } from 'lodash'; diff --git a/packages/strapi-admin/admin/src/containers/AuthPage/utils/formatErrorFromRequest.js b/packages/strapi-admin/admin/src/containers/AuthPage/utils/formatErrorFromRequest.js index e61c733030..a916fb4ba7 100644 --- a/packages/strapi-admin/admin/src/containers/AuthPage/utils/formatErrorFromRequest.js +++ b/packages/strapi-admin/admin/src/containers/AuthPage/utils/formatErrorFromRequest.js @@ -1,3 +1,4 @@ +// TODO DELETE THIS FILE WHEN AUTH FINISHED import { get } from 'lodash'; const formatErrorFromRequest = errorResponse => { diff --git a/packages/strapi-helper-plugin/lib/src/utils/auth.js b/packages/strapi-helper-plugin/lib/src/utils/auth.js index 448a2261e8..6f45b35fa0 100644 --- a/packages/strapi-helper-plugin/lib/src/utils/auth.js +++ b/packages/strapi-helper-plugin/lib/src/utils/auth.js @@ -85,6 +85,12 @@ const auth = { setUserInfo(value = '', isLocalStorage = false, userInfo = USER_INFO) { return auth.set(value, userInfo, isLocalStorage); }, + + updateToken(value = '') { + const isLocalStorage = localStorage && localStorage.getItem(TOKEN_KEY); + + return auth.setToken(value, isLocalStorage); + }, }; export default auth;