refactoring user settings in the frontend
This commit is contained in:
committed by
Daniel Hutzel
parent
d78e759bf7
commit
4b4fe2dc3f
@@ -1,5 +1,6 @@
|
||||
import React, { useMemo, createContext, useContext, useState } from "react";
|
||||
import axios from "axios";
|
||||
import { isEmpty, isArray } from "lodash";
|
||||
|
||||
const globalContext = {
|
||||
error: {},
|
||||
@@ -8,7 +9,6 @@ const globalContext = {
|
||||
ID: undefined,
|
||||
roles: [],
|
||||
email: undefined,
|
||||
level: undefined,
|
||||
token: undefined,
|
||||
},
|
||||
locale: undefined,
|
||||
@@ -19,46 +19,57 @@ const GlobalContext = createContext(globalContext);
|
||||
const useGlobals = () => useContext(GlobalContext);
|
||||
const AVAILABLE_LOCALES = ["en", "fr", "de"];
|
||||
|
||||
const isValidUser = (user) => {
|
||||
return (
|
||||
!isEmpty(user) &&
|
||||
user.ID &&
|
||||
user.roles &&
|
||||
user.email &&
|
||||
user.token &&
|
||||
isArray(user.roles)
|
||||
);
|
||||
};
|
||||
|
||||
const resetAxiosParams = () => {
|
||||
delete axios.defaults.headers.common["Authorization"];
|
||||
delete axios.defaults.userEntity;
|
||||
axios.defaults.tracksEntity = "Tracks";
|
||||
};
|
||||
|
||||
const setAxiosParams = (user) => {
|
||||
axios.defaults.headers.common["Authorization"] = `Basic ${user.token}`;
|
||||
axios.defaults.userID = user.ID;
|
||||
if (user.roles.includes("customer")) {
|
||||
axios.defaults.userEntity = `Customers/${user.ID}`;
|
||||
axios.defaults.tracksEntity = "MarkedTracks";
|
||||
} else {
|
||||
axios.defaults.userEntity = `Employees/${user.ID}`;
|
||||
axios.defaults.tracksEntity = "Tracks";
|
||||
}
|
||||
};
|
||||
|
||||
const useUserData = () => {
|
||||
const getUserDataFromLS = () => {
|
||||
let userFromLS;
|
||||
try {
|
||||
userFromLS = JSON.parse(localStorage.getItem("user"));
|
||||
} catch (e) {}
|
||||
if (userFromLS) {
|
||||
axios.defaults.headers.common[
|
||||
"Authorization"
|
||||
] = `Basic ${userFromLS.token}`;
|
||||
axios.defaults.userID = userFromLS.ID;
|
||||
axios.defaults.userEntity =
|
||||
!!userFromLS && userFromLS.roles.includes("customer")
|
||||
? `Customers/${userFromLS.ID}`
|
||||
: `Employees/${userFromLS.ID}`;
|
||||
if (isValidUser(userFromLS)) {
|
||||
setAxiosParams(userFromLS);
|
||||
return userFromLS;
|
||||
} else {
|
||||
localStorage.removeItem("user");
|
||||
resetAxiosParams();
|
||||
}
|
||||
axios.defaults.tracksEntity =
|
||||
!!userFromLS && userFromLS.roles.includes("customer")
|
||||
? "MarkedTracks"
|
||||
: "Tracks";
|
||||
return userFromLS;
|
||||
};
|
||||
|
||||
const setUserDataToLS = (value) => {
|
||||
if (!!value) {
|
||||
if (isValidUser(value)) {
|
||||
localStorage.setItem("user", JSON.stringify(value));
|
||||
axios.defaults.headers.common["Authorization"] = `Basic ${value.token}`;
|
||||
axios.defaults.tracksEntity = value.roles.includes("customer")
|
||||
? "MarkedTracks"
|
||||
: "Tracks";
|
||||
axios.defaults.userEntity =
|
||||
!!value && value.roles.includes("customer")
|
||||
? `Customers/${value.ID}`
|
||||
: `Employees/${value.ID}`;
|
||||
setAxiosParams(value);
|
||||
} else {
|
||||
localStorage.removeItem("user");
|
||||
delete axios.defaults.headers.common["Authorization"];
|
||||
delete axios.defaults.userEntity;
|
||||
axios.defaults.tracksEntity =
|
||||
!!value && value.roles.includes("customer") ? "MarkedTracks" : "Tracks";
|
||||
resetAxiosParams();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -7,17 +7,17 @@ aspect Named {
|
||||
|
||||
aspect Person {
|
||||
key ID : Integer;
|
||||
lastName : String(20);
|
||||
firstName : String(40);
|
||||
city : String(40);
|
||||
state : String(40);
|
||||
address : String(70);
|
||||
country : String(40);
|
||||
postalCode : String(10);
|
||||
phone : String(24);
|
||||
fax : String(24);
|
||||
email : String(60);
|
||||
password : String(500);
|
||||
lastName : String(20) default 'dummy';
|
||||
firstName : String(40) default 'dummy';
|
||||
city : String(40) default 'dummy';
|
||||
state : String(40) default 'dummy';
|
||||
address : String(70) default 'dummy';
|
||||
country : String(40) default 'dummy';
|
||||
postalCode : String(10) default 123;
|
||||
phone : String(24) default 'dummy';
|
||||
fax : String(24) default 'dummy';
|
||||
email : String(60) default 'dummy@email.com';
|
||||
password : String(500) default 'dummy';
|
||||
}
|
||||
|
||||
entity MediaTypes : Named {}
|
||||
@@ -66,11 +66,11 @@ entity Invoices {
|
||||
key ID : Integer;
|
||||
customer : Association to Customers;
|
||||
invoiceDate : DateTime;
|
||||
billingAddress : String(70);
|
||||
billingCity : String(40);
|
||||
billingState : String(40);
|
||||
billingCountry : String(40);
|
||||
billingPostalCode : String(40);
|
||||
billingAddress : String(70) default 'dummy';
|
||||
billingCity : String(40) default 'dummy';
|
||||
billingState : String(40) default 'dummy';
|
||||
billingCountry : String(40) default 'dummy';
|
||||
billingPostalCode : String(40) default 123;
|
||||
total : Decimal(10, 2);
|
||||
invoiceItems : Composition of many InvoiceItems
|
||||
on invoiceItems.invoice = $self;
|
||||
|
||||
Reference in New Issue
Block a user