diff --git a/client/.env.development b/client/.env.development
new file mode 100644
index 000000000..a708a53b5
--- /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 000000000..28e0cb412
--- /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 9c2abfb46..2f30270aa 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 c68e83856..b0372dfa9 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 adcb6267e..541bcdd37 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 5d3236923..064a74229 100644
--- a/client/public/index.html
+++ b/client/public/index.html
@@ -5,7 +5,8 @@
-
+
+