From 317611b099e3d9bd8ed51359a61a3ebb9b97ccdd Mon Sep 17 00:00:00 2001 From: Clement Michaud Date: Sat, 26 Jan 2019 15:29:12 +0100 Subject: [PATCH] Replace material-UI by material-components-web. --- client/.env.development | 2 + client/.env.production | 2 + client/docker-compose.yml | 1 + client/package-lock.json | 216 +++++++++++++++++- client/package.json | 14 +- client/public/index.html | 3 +- client/public/manifest.json | 4 +- client/src/{App.css => .env.development} | 0 client/src/App.scss | 3 + client/src/App.tsx | 4 +- .../AlreadyAuthenticated.ts | 34 --- .../FirstFactorForm/FirstFactorForm.ts | 36 --- .../FormNotification/FormNotification.ts | 20 -- .../SecondFactorForm/SecondFactorForm.ts | 69 ------ .../jss/layouts/PortalLayout/PortalLayout.ts | 41 ---- .../ForgotPasswordView/ForgotPasswordView.ts | 33 --- .../OneTimePasswordRegistrationView.ts | 55 ----- .../ResetPasswordView/ResetPasswordView.ts | 30 --- .../SecurityKeyRegistrationView.ts | 19 -- client/src/assets/scss/_variables.scss | 2 + .../AlreadyAuthenticated.module.scss | 24 ++ .../CircleLoader/CircleLoader.module.scss | 0 .../FirstFactorForm.module.scss | 43 ++++ .../Notification/Notification.module.scss | 10 + .../SecondFactorForm.module.scss | 75 ++++++ .../PortalLayout/PortalLayout.module.scss | 40 ++++ .../ConfirmationSentView.module.scss} | 0 .../ForgotPasswordView.module.scss | 36 +++ ...neTimePasswordRegistrationView.module.scss | 60 +++++ .../ResetPasswordView.module.scss | 32 +++ .../SecurityKeyRegistrationView.module.scss | 18 ++ .../AlreadyAuthenticated.tsx | 27 +-- .../components/CircleLoader/CircleLoader.tsx | 2 +- .../FirstFactorForm/FirstFactorForm.tsx | 99 ++++---- .../FormNotification/FormNotification.tsx | 27 --- .../components/Notification/Notification.tsx | 21 ++ .../SecondFactorForm/SecondFactorForm.tsx | 86 +++---- .../FirstFactorForm/FirstFactorForm.ts | 11 +- client/src/index.css | 4 - .../src/layouts/PortalLayout/PortalLayout.tsx | 28 ++- client/src/routes/routes.ts | 6 +- .../AuthenticationView/AuthenticationView.tsx | 2 +- .../ConfirmationSentView.tsx | 6 +- .../ForgotPasswordView/ForgotPasswordView.tsx | 47 ++-- .../OneTimePasswordRegistrationView.tsx | 50 ++-- .../ResetPasswordView/ResetPasswordView.tsx | 73 +++--- .../SecurityKeyRegistrationView.tsx | 24 +- package-lock.json | 68 +++--- .../lib/IdentityCheckPreValidationTemplate.ts | 3 - server/src/lib/authentication/Level.ts | 4 +- server/src/lib/routes/firstfactor/post.ts | 4 +- .../identity/PasswordResetHandler.ts | 9 +- .../totp/identity/RegistrationHandler.ts | 4 +- .../u2f/identity/RegistrationHandler.ts | 10 +- server/src/lib/routes/state/get.ts | 8 +- server/test/requests.ts | 92 -------- shared/AuthenticationLevel.ts | 4 +- shared/api.ts | 4 +- 58 files changed, 881 insertions(+), 768 deletions(-) create mode 100644 client/.env.development create mode 100644 client/.env.production rename client/src/{App.css => .env.development} (100%) mode change 100644 => 100755 create mode 100644 client/src/App.scss delete mode 100644 client/src/assets/jss/components/AlreadyAuthenticated/AlreadyAuthenticated.ts delete mode 100644 client/src/assets/jss/components/FirstFactorForm/FirstFactorForm.ts delete mode 100644 client/src/assets/jss/components/FormNotification/FormNotification.ts delete mode 100644 client/src/assets/jss/components/SecondFactorForm/SecondFactorForm.ts delete mode 100644 client/src/assets/jss/layouts/PortalLayout/PortalLayout.ts delete mode 100644 client/src/assets/jss/views/ForgotPasswordView/ForgotPasswordView.ts delete mode 100644 client/src/assets/jss/views/OneTimePasswordRegistrationView/OneTimePasswordRegistrationView.ts delete mode 100644 client/src/assets/jss/views/ResetPasswordView/ResetPasswordView.ts delete mode 100644 client/src/assets/jss/views/SecurityKeyRegistrationView/SecurityKeyRegistrationView.ts create mode 100644 client/src/assets/scss/_variables.scss create mode 100644 client/src/assets/scss/components/AlreadyAuthenticated/AlreadyAuthenticated.module.scss rename client/src/{ => assets/scss}/components/CircleLoader/CircleLoader.module.scss (100%) create mode 100644 client/src/assets/scss/components/FirstFactorForm/FirstFactorForm.module.scss create mode 100644 client/src/assets/scss/components/Notification/Notification.module.scss create mode 100644 client/src/assets/scss/components/SecondFactorForm/SecondFactorForm.module.scss create mode 100644 client/src/assets/scss/layouts/PortalLayout/PortalLayout.module.scss rename client/src/{views/ConfirmationSentView/ConfirmationSentView.module.css => assets/scss/views/ConfirmationSentView/ConfirmationSentView.module.scss} (100%) create mode 100644 client/src/assets/scss/views/ForgotPasswordView/ForgotPasswordView.module.scss create mode 100644 client/src/assets/scss/views/OneTimePasswordRegistrationView/OneTimePasswordRegistrationView.module.scss create mode 100644 client/src/assets/scss/views/ResetPasswordView/ResetPasswordView.module.scss create mode 100644 client/src/assets/scss/views/SecurityKeyRegistrationView/SecurityKeyRegistrationView.module.scss delete mode 100644 client/src/components/FormNotification/FormNotification.tsx create mode 100644 client/src/components/Notification/Notification.tsx delete mode 100644 server/src/lib/IdentityCheckPreValidationTemplate.ts delete mode 100644 server/test/requests.ts diff --git a/client/.env.development b/client/.env.development new file mode 100644 index 00000000..a708a53b --- /dev/null +++ b/client/.env.development @@ -0,0 +1,2 @@ + +REACT_APP_CSP_CONTENT="default-src 'unsafe-inline'; script-src * 'unsafe-inline'; img-src * data:; style-src 'unsafe-inline'; connect-src * 'unsafe-inline' extensions:" diff --git a/client/.env.production b/client/.env.production new file mode 100644 index 00000000..28e0cb41 --- /dev/null +++ b/client/.env.production @@ -0,0 +1,2 @@ + +REACT_APP_CSP_CONTENT="default-src 'self'; style-src 'self'; script-src 'self';" diff --git a/client/docker-compose.yml b/client/docker-compose.yml index 9c2abfb4..2f30270a 100644 --- a/client/docker-compose.yml +++ b/client/docker-compose.yml @@ -8,6 +8,7 @@ services: - ./client/tsconfig.json:/usr/app/client/tsconfig.json - ./client/public:/usr/app/client/public - ./client/src:/usr/app/client/src + - ./client/.env.development:/usr/app/client/.env.development networks: example-network: aliases: diff --git a/client/package-lock.json b/client/package-lock.json index c68e8385..b0372dfa 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -1,5 +1,5 @@ { - "name": "client-react", + "name": "authelia-portal", "version": "0.1.0", "lockfileVersion": 1, "requires": true, @@ -890,6 +890,215 @@ "react-is": "^16.6.3" } }, + "@material/animation": { + "version": "0.41.0", + "resolved": "https://registry.npmjs.org/@material/animation/-/animation-0.41.0.tgz", + "integrity": "sha512-yYAwJbX3Q2AFd4dr6IYOsWLQy2HN8zWOFVl9AbUXunjzTfJCa/ecfXCriaT6qkmoNoHeTdJHRrsQJZC5GsPvzA==" + }, + "@material/base": { + "version": "0.41.0", + "resolved": "https://registry.npmjs.org/@material/base/-/base-0.41.0.tgz", + "integrity": "sha512-tEyzwBRu3d1H120SfKsDVYZHcqT5lKohh/7cWKR93aAaPDkSvjpKJIjyu2yuSkjpDduVZGzVocYbOvhUKhhzXQ==" + }, + "@material/button": { + "version": "0.41.0", + "resolved": "https://registry.npmjs.org/@material/button/-/button-0.41.0.tgz", + "integrity": "sha512-9mA/7P8yD3YPJ8ijwu0oOiT65OCa8Km3M9OF6VAsBE+XJS9Wo5hWDMgkv16raeOFeXj+1ALsjvuTz31JdcSkgQ==", + "requires": { + "@material/elevation": "^0.41.0", + "@material/ripple": "^0.41.0", + "@material/rtl": "^0.40.1", + "@material/shape": "^0.41.0", + "@material/theme": "^0.41.0", + "@material/typography": "^0.41.0" + } + }, + "@material/checkbox": { + "version": "0.41.0", + "resolved": "https://registry.npmjs.org/@material/checkbox/-/checkbox-0.41.0.tgz", + "integrity": "sha512-Zz6e5WRpziO7Z+4rbEs8GHNNBf1UuttniLp6/RvwPSQRaD8G04sdg4HcP/aDCY1KGMwivkuDPc2Bsgs6j+rD7Q==", + "requires": { + "@material/animation": "^0.41.0", + "@material/base": "^0.41.0", + "@material/ripple": "^0.41.0", + "@material/rtl": "^0.40.1", + "@material/selection-control": "^0.41.0", + "@material/theme": "^0.41.0" + } + }, + "@material/elevation": { + "version": "0.41.0", + "resolved": "https://registry.npmjs.org/@material/elevation/-/elevation-0.41.0.tgz", + "integrity": "sha512-ZtZS8z5ie9c7Cx5PVudgSorGYa0C3lu3dA+Nn6qJdhGUokl01msh54NfNuwk+EZsk65bNRRqw1Td/63TCbKIzg==", + "requires": { + "@material/animation": "^0.41.0", + "@material/theme": "^0.41.0" + } + }, + "@material/floating-label": { + "version": "0.41.0", + "resolved": "https://registry.npmjs.org/@material/floating-label/-/floating-label-0.41.0.tgz", + "integrity": "sha512-qI6f1nZU3crXxWAI9fw3U5fHw2qOzEor49EvskbcaV5KSRW5qO+jtfUQ3ib/Vhki7lqhgwNHB/0n7KYhvhjRHQ==", + "requires": { + "@material/animation": "^0.41.0", + "@material/base": "^0.41.0", + "@material/rtl": "^0.40.1", + "@material/theme": "^0.41.0", + "@material/typography": "^0.41.0" + } + }, + "@material/line-ripple": { + "version": "0.41.0", + "resolved": "https://registry.npmjs.org/@material/line-ripple/-/line-ripple-0.41.0.tgz", + "integrity": "sha512-5DDIoC3d78fCLhNgle7DRFojT3D2SF+XVpUd3g6yLZmybHB7832p4bgl/qGpbIXwk1wAQA1dkUgKH5foxorjNQ==", + "requires": { + "@material/animation": "^0.41.0", + "@material/base": "^0.41.0", + "@material/theme": "^0.41.0" + } + }, + "@material/notched-outline": { + "version": "0.41.0", + "resolved": "https://registry.npmjs.org/@material/notched-outline/-/notched-outline-0.41.0.tgz", + "integrity": "sha512-nQBkOXvkd5G9FeJ9UuecZh88WRgTsnGVvfj7UFJZEkvkzZwLBGUiJS6fF9FYraih3ZFgmphdbJxXEd9af3cqyQ==", + "requires": { + "@material/animation": "^0.41.0", + "@material/base": "^0.41.0", + "@material/rtl": "^0.40.1", + "@material/shape": "^0.41.0", + "@material/theme": "^0.41.0" + } + }, + "@material/react-button": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@material/react-button/-/react-button-0.8.0.tgz", + "integrity": "sha512-j/wk/HK2A3/mb+yFdYCbkWFi6hYvvq4fc4t1M3aRLgdeddMNn/+FHOu014dyKeFW93RrBn1WAdQTwCc31KivuQ==", + "requires": { + "@material/button": "^0.41.0", + "@material/react-ripple": "^0.8.0", + "classnames": "^2.2.5", + "react": "^16.4.2" + } + }, + "@material/react-checkbox": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@material/react-checkbox/-/react-checkbox-0.8.0.tgz", + "integrity": "sha512-/7wQcFovUa04/T0MnJOnrbGn21CgxSSWjqkbMPFh/RjET8vya/kqAjhkLw51Mk4q6si+nfHljM6YSFvvXbUBBw==", + "requires": { + "@material/checkbox": "^0.41.0", + "@material/react-ripple": "^0.8.0", + "classnames": "^2.2.5", + "react": "^16.3.2" + } + }, + "@material/react-floating-label": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@material/react-floating-label/-/react-floating-label-0.8.0.tgz", + "integrity": "sha512-Bfa+/4nLFu6YE0pAB1wG+vxwYiFvHcOKIq7uAB/IY0/N/ONKM2Jh74/KKqLvNJI608YpZqLAqmZu87R3K15rNQ==", + "requires": { + "@material/floating-label": "^0.41.0", + "classnames": "^2.2.5", + "react": "^16.4.2" + } + }, + "@material/react-line-ripple": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@material/react-line-ripple/-/react-line-ripple-0.8.0.tgz", + "integrity": "sha512-s921awUm8taB/kbETGN/vEEZV1WUwtTcsNkQ//HsK2fJW7lKuyVWrObc8ZhMFWljVEUj54ANmRvCke7M4/LSmA==", + "requires": { + "@material/line-ripple": "^0.41.0", + "classnames": "^2.2.5", + "react": "^16.4.2" + } + }, + "@material/react-notched-outline": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@material/react-notched-outline/-/react-notched-outline-0.8.0.tgz", + "integrity": "sha512-fQ8hHGOQ3dpk9AuuQqXbCAN2UTuRr5LCztkDxdCwvaPC+oR5meTd8RW7RkJgx/MeiSLe/1/2EMz+9lP+V0rx2w==", + "requires": { + "@material/notched-outline": "^0.41.0", + "classnames": "^2.2.5", + "react": "^16.4.2" + } + }, + "@material/react-ripple": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@material/react-ripple/-/react-ripple-0.8.0.tgz", + "integrity": "sha512-ThH9Px42poicRXgFBTfLjbAsVIUi6wmX4RszDPwiSTVMQYc785n240VAD8MfVCR27ykIxCrys/YibqxvREvjUQ==", + "requires": { + "@material/ripple": "^0.41.0", + "classnames": "^2.2.5", + "react": "^16.4.2" + } + }, + "@material/react-text-field": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@material/react-text-field/-/react-text-field-0.8.0.tgz", + "integrity": "sha512-eISr4YIBmsIarQQU/LhAPfB9M8srY8Tzagqw6E2z5JyHux8eHlsMWSuYD6eh4FiQekdZoIgoJjlFIGhOvNV59Q==", + "requires": { + "@material/react-floating-label": "^0.8.0", + "@material/react-line-ripple": "^0.8.0", + "@material/react-notched-outline": "^0.8.0", + "@material/textfield": "^0.41.0", + "classnames": "^2.2.5", + "react": "^16.4.2" + } + }, + "@material/ripple": { + "version": "0.41.0", + "resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-0.41.0.tgz", + "integrity": "sha512-rxEUVWM4AByDlTCH0kkthZQmUuY6eeN0X6cOHBoioFN2vUDk0D0Nfzz/N9FF2AlAf8C2lDDLrTuqnJPVIn+NHA==", + "requires": { + "@material/animation": "^0.41.0", + "@material/base": "^0.41.0", + "@material/theme": "^0.41.0" + } + }, + "@material/rtl": { + "version": "0.40.1", + "resolved": "https://registry.npmjs.org/@material/rtl/-/rtl-0.40.1.tgz", + "integrity": "sha512-Pk6Iw1/KrhWZoZtkDsPMDUW0bm7Z1zeXb3MTQRCFmjf1wU5cRxgOTtuoZLcJqlcKGppLAzJL/TJV3E7KEiuL0A==" + }, + "@material/selection-control": { + "version": "0.41.0", + "resolved": "https://registry.npmjs.org/@material/selection-control/-/selection-control-0.41.0.tgz", + "integrity": "sha512-rRHGiZVPoP4nxAAoeqsgTsxz9GwInGs7HIlEhPfMFygmSZVUHHsuOJXSTpOKYi8GCoKHpB0RKZsAtxM0BYAelw==", + "requires": { + "@material/ripple": "^0.41.0" + } + }, + "@material/shape": { + "version": "0.41.0", + "resolved": "https://registry.npmjs.org/@material/shape/-/shape-0.41.0.tgz", + "integrity": "sha512-k1K3CjOVxclfb/0r28cOa2oJpP7QMA2fP0SOS3Vh8ale5Q2jkaHTL60KX8VkHvV6rMqShpXW+60gPjoz5XRbDQ==" + }, + "@material/textfield": { + "version": "0.41.0", + "resolved": "https://registry.npmjs.org/@material/textfield/-/textfield-0.41.0.tgz", + "integrity": "sha512-kJ52W2gxOS2xfpreVhvHQ1u3UkiDl58duw9HkhEkK5Oi1bSDOtbnlWy0pGTOiAma5ZQgetPNgoa+T0zMBptfnw==", + "requires": { + "@material/animation": "^0.41.0", + "@material/base": "^0.41.0", + "@material/floating-label": "^0.41.0", + "@material/line-ripple": "^0.41.0", + "@material/notched-outline": "^0.41.0", + "@material/ripple": "^0.41.0", + "@material/rtl": "^0.40.1", + "@material/shape": "^0.41.0", + "@material/theme": "^0.41.0", + "@material/typography": "^0.41.0" + } + }, + "@material/theme": { + "version": "0.41.0", + "resolved": "https://registry.npmjs.org/@material/theme/-/theme-0.41.0.tgz", + "integrity": "sha512-ohW2JxObKOWvP34EkIIcrEVtL3g0Gs/T3/MdOsM36euyshY8Jwl1f6fjVUQvVjSpixUtSb30/+ulblF8fTOwBg==" + }, + "@material/typography": { + "version": "0.41.0", + "resolved": "https://registry.npmjs.org/@material/typography/-/typography-0.41.0.tgz", + "integrity": "sha512-15dlqSU+9uGcWdg4KXXcmDzTKJPb7/5Z9kmooONb2Laot1uiuntDXQS0yL+U2FYLW5Ros+WVMosDBKFruWx68A==" + }, "@mrmlnc/readdir-enhanced": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", @@ -16990,6 +17199,11 @@ "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" }, + "utility-types": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.4.1.tgz", + "integrity": "sha512-GyH068kJf7c4vhfqj4aCM5X+TeV8jG2iPFLimpGpnQ7dvKfogZOHfiYxMww/nGEfMm/bEmnVbeZGO1see1OVKg==" + }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", diff --git a/client/package.json b/client/package.json index adcb6267..541bcdd3 100644 --- a/client/package.json +++ b/client/package.json @@ -1,10 +1,11 @@ { - "name": "client-react", + "name": "authelia-portal", "version": "0.1.0", "private": true, "dependencies": { - "@material-ui/core": "3.7.1", - "@material-ui/icons": "^3.0.1", + "@material/react-button": "^0.8.0", + "@material/react-checkbox": "^0.8.0", + "@material/react-text-field": "^0.8.0", "@types/classnames": "^2.2.7", "@types/jss": "^9.5.7", "@types/node": "^10.12.2", @@ -31,11 +32,12 @@ "redux-thunk": "^2.3.0", "typesafe-actions": "^3.0.0", "typescript": "^3.1.6", - "u2f-api": "^1.0.10" + "u2f-api": "^1.0.10", + "utility-types": "^3.4.1" }, "scripts": { - "start": "react-scripts start", - "build": "react-scripts build", + "start": "SASS_PATH=./node_modules react-scripts start", + "build": "SASS_PATH=./node_modules react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" }, diff --git a/client/public/index.html b/client/public/index.html index 5d323692..064a7422 100644 --- a/client/public/index.html +++ b/client/public/index.html @@ -5,7 +5,8 @@ - + +