diff --git a/.gitignore b/.gitignore
index 5134235..a8bef8f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -107,3 +107,4 @@ ENV/
webpack-stats.json
reports
local.py
+estate/settings/custom.py
diff --git a/estate/assets/js/api/messages.js b/estate/assets/js/api/messages.js
index 840bbc7..8587867 100644
--- a/estate/assets/js/api/messages.js
+++ b/estate/assets/js/api/messages.js
@@ -31,18 +31,24 @@ export function error(message) {
}
export function handleResponseError(err) {
- if (err.response) {
+ if (err.response || err.errors) {
+ var data = err.response.data
+ console.log(data)
var message = ""
- if (isArray(err.response.data.errors)) {
- each(err.response.data.errors, (item) => {
+ if (isArray(data.errors)) {
+ each(data.errors, (item) => {
message += item.detail + "\n"
})
+ } else if (data.errors.non_field_errors) {
+ each(data.errors.non_field_errors, (item) => {
+ message += item + "\n"
+ })
} else {
- message += err.response.data.errors.detail
+ message += data.errors.detail
}
dispatch(Notifications.show({
uid: count++,
- title: `[${err.response.data.status_code}] ${err.response.data.status_text}`,
+ title: `[${data.status_code}] ${data.status_text}`,
message: message,
position: "tl",
autoDismiss: 0,
diff --git a/estate/assets/js/components/Modal.jsx b/estate/assets/js/components/Modal.jsx
index 007050d..dee585a 100644
--- a/estate/assets/js/components/Modal.jsx
+++ b/estate/assets/js/components/Modal.jsx
@@ -73,7 +73,7 @@ class Modal extends React.Component {
{ this.props.children }
-
+
diff --git a/estate/assets/js/index.jsx b/estate/assets/js/index.jsx
index c1e0c54..cad65c3 100644
--- a/estate/assets/js/index.jsx
+++ b/estate/assets/js/index.jsx
@@ -13,6 +13,24 @@ import "./estate.css"
axios.defaults.xsrfHeaderName = "X-CSRFTOKEN";
axios.defaults.xsrfCookieName = "csrftoken";
+if (localStorage.authToken) {
+ axios.defaults.headers = {'Authorization': 'Token ' + localStorage.authToken}
+}
+window.addEventListener("storage", function(e) {
+ if (e.key === "authToken"){
+ if (e.newValue) {
+ window.dispatch({
+ type: "CONFIRM_LOGIN",
+ payload: {token: e.newValue}
+ })
+ } else {
+ window.dispatch({
+ type: "CONFIRM_LOGOUT",
+ payload: {token: e.newValue}
+ })
+ }
+ }
+})
window.jsyaml = require("js-yaml") // eslint-disable-line no-undef
diff --git a/estate/assets/js/reducers/auth.js b/estate/assets/js/reducers/auth.js
index ceba702..281129e 100644
--- a/estate/assets/js/reducers/auth.js
+++ b/estate/assets/js/reducers/auth.js
@@ -4,7 +4,7 @@ import axios from "axios"
var initialState = {
authenticating: false,
- token: null,
+ token: localStorage.authToken || null,
}
export default createReducer(initialState, {
@@ -14,6 +14,16 @@ export default createReducer(initialState, {
},
["FINISH_LOGIN"]: (state, action) => {
+ state = set(["authenticating"])(false)(state)
+ state = set(["token"])(action.payload.token)(state)
+ if (action.payload.token) {
+ localStorage.authToken = action.payload.token
+ axios.defaults.headers = {'Authorization': 'Token ' + action.payload.token}
+ }
+ return state
+ },
+
+ ["CONFIRM_LOGIN"]: (state, action) => {
state = set(["authenticating"])(false)(state)
state = set(["token"])(action.payload.token)(state)
axios.defaults.headers = {'Authorization': 'Token ' + action.payload.token}
@@ -21,6 +31,14 @@ export default createReducer(initialState, {
},
["DO_LOGOUT"]: (state, action) => {
+ state = set(["authenticating"])(false)(state)
+ state = set(["token"])(null)(state)
+ localStorage.removeItem("authToken")
+ axios.defaults.headers = {}
+ return state
+ },
+
+ ["CONFIRM_LOGOUT"]: (state, action) => {
state = set(["authenticating"])(false)(state)
state = set(["token"])(null)(state)
axios.defaults.headers = {}
diff --git a/estate/local.sh b/estate/local.sh
index af306f8..bef2e8e 100755
--- a/estate/local.sh
+++ b/estate/local.sh
@@ -8,10 +8,11 @@ until psql -c "select 1" > /dev/null 2>&1 || [ $RETRIES -eq 0 ]; do
echo "Waiting for postgres server, $((RETRIES--)) remaining attempts..."
sleep 1
done
+echo "Preparing database for local development"
+django-admin migrate > /dev/null
+django-admin loaddata initial_data > /dev/null
echo "Starting Webpack Server"
webpack-dev-server --config webpack/webpack.local.config.js &
echo "Starting Django Server"
-django-admin migrate
-django-admin loaddata initial_data
exec django-admin runserver 0.0.0.0:8000