datacenter-lib-react-ts 1.0.5 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/auth/authCheck.js +2 -5
- package/dist/cjs/auth/authCheck.js.map +1 -1
- package/dist/cjs/auth/authRequired.js +7 -3
- package/dist/cjs/auth/authRequired.js.map +1 -1
- package/dist/cjs/auth/authentication.slice.js.map +1 -1
- package/dist/cjs/auth/userDropdownMenu.js +40 -0
- package/dist/cjs/auth/userDropdownMenu.js.map +1 -0
- package/dist/cjs/auth/userOptions.js +14 -18
- package/dist/cjs/auth/userOptions.js.map +1 -1
- package/dist/esm/auth/authCheck.js +2 -5
- package/dist/esm/auth/authCheck.js.map +1 -1
- package/dist/esm/auth/authRequired.js +7 -3
- package/dist/esm/auth/authRequired.js.map +1 -1
- package/dist/esm/auth/authentication.slice.js.map +1 -1
- package/dist/esm/auth/userDropdownMenu.js +35 -0
- package/dist/esm/auth/userDropdownMenu.js.map +1 -0
- package/dist/esm/auth/userOptions.js +15 -19
- package/dist/esm/auth/userOptions.js.map +1 -1
- package/dist/types/auth/authentication.slice.d.ts +3 -5
- package/dist/types/auth/userDropdownMenu.d.ts +13 -0
- package/package.json +1 -1
- package/src/auth/authCheck.tsx +2 -5
- package/src/auth/authRequired.tsx +9 -4
- package/src/auth/authentication.slice.tsx +2 -2
- package/src/auth/userDropdownMenu.tsx +78 -0
- package/src/auth/userOptions.tsx +19 -29
|
@@ -21,7 +21,6 @@ const AuthCheckComponent = ({ authenticationState, baseApiUrl, children }) => {
|
|
|
21
21
|
navigate(newPath, { replace: true });
|
|
22
22
|
};
|
|
23
23
|
(0, react_1.useEffect)(() => {
|
|
24
|
-
// if (!authenticationState.payload && !authenticationState.options?.loading) {
|
|
25
24
|
if (!new authentication_slice_1.AuthenticationStateHelper({ state: authenticationState }).authenticated && !authenticationState.options?.loading) {
|
|
26
25
|
if (authUuid) {
|
|
27
26
|
dispatch((0, authentication_slice_1.authenticationStateLoadFromApi)({
|
|
@@ -35,16 +34,14 @@ const AuthCheckComponent = ({ authenticationState, baseApiUrl, children }) => {
|
|
|
35
34
|
}));
|
|
36
35
|
}
|
|
37
36
|
}
|
|
38
|
-
// else if (authenticationState.payload && authUuid) {
|
|
39
37
|
else if (new authentication_slice_1.AuthenticationStateHelper({ state: authenticationState }).authenticated && authUuid) {
|
|
40
|
-
// caso o usuario ja tenha logado e
|
|
38
|
+
// caso o usuario ja tenha logado e tenta acessar a pagina de autenticacao, o redirect manda o authUuid
|
|
41
39
|
// nesse cenario, deve-se eliminar o authUuid da url
|
|
42
40
|
// isso vale para autenticacao em um dominio diferente do dominio do autenticador
|
|
43
41
|
// para recursos no mesmo dominio do autenticador, o redirect quando o usuario já tem autenticado esta correto, ou seja,
|
|
44
|
-
// ele nao manda o authUuid caso o usuario já esteja logado, em
|
|
42
|
+
// ele nao manda o authUuid caso o usuario já esteja logado, em dominios diferentes nao tem como o autenticador saber se o app esta logado
|
|
45
43
|
onGetAuthFinish();
|
|
46
44
|
}
|
|
47
|
-
// }, [authenticationState, location]);
|
|
48
45
|
}, [authenticationState]);
|
|
49
46
|
return react_1.default.createElement(react_1.default.Fragment, null, children);
|
|
50
47
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authCheck.js","sourceRoot":"","sources":["../../../src/auth/authCheck.tsx"],"names":[],"mappings":";;;;AACA,uEAAkG;AAClG,uDAAoD;AACpD,6CAA0C;AAC1C,uDAA4D;AAC5D,iEAAyH;AACzH,2CAAwC;AAQjC,MAAM,kBAAkB,GAAuC,CAAC,EAAE,mBAAmB,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;IACtH,MAAM,QAAQ,GAAG,IAAA,8BAAW,GAAE,CAAA;IAC9B,MAAM,QAAQ,GAAG,IAAA,8BAAW,GAAE,CAAA;IAC9B,MAAM,QAAQ,GAAG,IAAA,yBAAW,GAAO,CAAA;IACnC,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IACxD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,qBAAS,CAAC,uBAAuB,CAAC,CAAA;IAEnE,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,WAAW,CAAC,MAAM,CAAC,qBAAS,CAAC,uBAAuB,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,GAAG,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC1E,QAAQ,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC,CAAA;IAED,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb
|
|
1
|
+
{"version":3,"file":"authCheck.js","sourceRoot":"","sources":["../../../src/auth/authCheck.tsx"],"names":[],"mappings":";;;;AACA,uEAAkG;AAClG,uDAAoD;AACpD,6CAA0C;AAC1C,uDAA4D;AAC5D,iEAAyH;AACzH,2CAAwC;AAQjC,MAAM,kBAAkB,GAAuC,CAAC,EAAE,mBAAmB,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;IACtH,MAAM,QAAQ,GAAG,IAAA,8BAAW,GAAE,CAAA;IAC9B,MAAM,QAAQ,GAAG,IAAA,8BAAW,GAAE,CAAA;IAC9B,MAAM,QAAQ,GAAG,IAAA,yBAAW,GAAO,CAAA;IACnC,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IACxD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,qBAAS,CAAC,uBAAuB,CAAC,CAAA;IAEnE,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,WAAW,CAAC,MAAM,CAAC,qBAAS,CAAC,uBAAuB,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,GAAG,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC1E,QAAQ,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC,CAAA;IAED,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI,gDAAyB,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC,aAAa,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;YAC1H,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,IAAA,qDAA8B,EAAC;oBACtC,UAAU;oBACV,cAAc,EAAE;wBACd,IAAI,EAAE,6CAAkB,CAAC,IAAI;wBAC7B,IAAI,EAAE,QAAQ;qBACuB;oBACvC,SAAS,EAAE,eAAe;oBAC1B,OAAO,EAAE,eAAe;iBACzB,CAAC,CAAC,CAAA;YACL,CAAC;QACH,CAAC;aACI,IAAI,IAAI,gDAAyB,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC,aAAa,IAAI,QAAQ,EAAE,CAAC;YACjG,uGAAuG;YACvG,oDAAoD;YACpD,iFAAiF;YACjF,yHAAyH;YACzH,0IAA0I;YAC1I,eAAe,EAAE,CAAA;QACnB,CAAC;IACH,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAE1B,OAAO,8DAAG,QAAQ,CAAI,CAAA;AACxB,CAAC,CAAC;AAvCW,QAAA,kBAAkB,sBAuC7B"}
|
|
@@ -6,21 +6,25 @@ const react_1 = tslib_1.__importStar(require("react"));
|
|
|
6
6
|
const react_router_dom_1 = require("react-router-dom");
|
|
7
7
|
const authentication_slice_1 = require("./authentication.slice");
|
|
8
8
|
const authUtils_1 = require("./authUtils");
|
|
9
|
-
const AuthRequiredComponent = ({ authenticationState, authUrlBase, redirectUrl,
|
|
9
|
+
const AuthRequiredComponent = ({ authenticationState, authUrlBase, redirectUrl, children }) => {
|
|
10
10
|
const location = (0, react_router_dom_1.useLocation)();
|
|
11
11
|
const queryParams = new URLSearchParams(location.search);
|
|
12
12
|
const authUuid = queryParams.get(authUtils_1.AuthUtils.authUuidQueryStringName);
|
|
13
13
|
(0, react_1.useEffect)(() => {
|
|
14
|
-
// if (!authenticationState.payload && !authenticationState.options?.loading) {
|
|
15
14
|
if (!new authentication_slice_1.AuthenticationStateHelper({ state: authenticationState, }).authenticated && !authenticationState.options?.loading) {
|
|
16
15
|
if (!authUuid) {
|
|
17
16
|
if (!authUrlBase.includes('/login'))
|
|
18
17
|
authUrlBase = `${authUrlBase}/login`;
|
|
18
|
+
localStorage.clear();
|
|
19
|
+
sessionStorage.clear();
|
|
20
|
+
document.cookie.split(";").forEach(cookie => {
|
|
21
|
+
const name = cookie.split("=")[0].trim();
|
|
22
|
+
document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;
|
|
23
|
+
});
|
|
19
24
|
window.location.href = `${authUrlBase}?${authUtils_1.AuthUtils.authToRedirectQueryStringName}=${encodeURIComponent(redirectUrl)}`;
|
|
20
25
|
}
|
|
21
26
|
}
|
|
22
27
|
}, [authenticationState]);
|
|
23
|
-
// if (!authenticationState.payload) {
|
|
24
28
|
if (!new authentication_slice_1.AuthenticationStateHelper({ state: authenticationState, }).authenticated) {
|
|
25
29
|
return null;
|
|
26
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authRequired.js","sourceRoot":"","sources":["../../../src/auth/authRequired.tsx"],"names":[],"mappings":";;;;AACA,uDAAoD;AACpD,uDAA+C;AAC/C,iEAAyF;AACzF,2CAAwC;
|
|
1
|
+
{"version":3,"file":"authRequired.js","sourceRoot":"","sources":["../../../src/auth/authRequired.tsx"],"names":[],"mappings":";;;;AACA,uDAAoD;AACpD,uDAA+C;AAC/C,iEAAyF;AACzF,2CAAwC;AASjC,MAAM,qBAAqB,GAA0C,CAAC,EAAE,mBAAmB,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC1I,MAAM,QAAQ,GAAG,IAAA,8BAAW,GAAE,CAAA;IAC9B,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IACxD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,qBAAS,CAAC,uBAAuB,CAAC,CAAA;IAEnE,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI,gDAAyB,CAAC,EAAE,KAAK,EAAE,mBAAmB,GAAG,CAAC,CAAC,aAAa,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;YAC3H,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBACjC,WAAW,GAAG,GAAG,WAAW,QAAQ,CAAA;gBAEtC,YAAY,CAAC,KAAK,EAAE,CAAA;gBACpB,cAAc,CAAC,KAAK,EAAE,CAAA;gBACtB,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACzC,QAAQ,CAAC,MAAM,GAAG,GAAG,IAAI,mDAAmD,CAAC;gBAC/E,CAAC,CAAC,CAAC;gBAEH,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,WAAW,IAAI,qBAAS,CAAC,6BAA6B,IAAI,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAA;YACvH,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAE1B,IAAI,CAAC,IAAI,gDAAyB,CAAC,EAAE,KAAK,EAAE,mBAAmB,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;QAClF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,8DAAG,QAAQ,CAAI,CAAA;AACxB,CAAC,CAAC;AA5BW,QAAA,qBAAqB,yBA4BhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authentication.slice.js","sourceRoot":"","sources":["../../../src/auth/authentication.slice.tsx"],"names":[],"mappings":";;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"authentication.slice.js","sourceRoot":"","sources":["../../../src/auth/authentication.slice.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UserDropdownMenu = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const material_1 = require("@mui/material");
|
|
6
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
7
|
+
const md_1 = require("react-icons/md");
|
|
8
|
+
const UserDropdownMenu = ({ user, anchorEl, open, onClose, onLogOut, onProfile, }) => {
|
|
9
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
10
|
+
react_1.default.createElement(material_1.Menu, { anchorEl: anchorEl, open: open, onClose: onClose, anchorOrigin: { vertical: "bottom", horizontal: "right" }, transformOrigin: { vertical: "top", horizontal: "right" }, PaperProps: {
|
|
11
|
+
sx: {
|
|
12
|
+
marginTop: .5,
|
|
13
|
+
minWidth: 260,
|
|
14
|
+
borderRadius: 2,
|
|
15
|
+
boxShadow: "0 8px 24px rgba(0,0,0,0.12)",
|
|
16
|
+
overflow: "hidden",
|
|
17
|
+
},
|
|
18
|
+
}, MenuListProps: { sx: { p: 0 } } },
|
|
19
|
+
react_1.default.createElement(material_1.MenuItem, { onClick: onProfile, sx: {
|
|
20
|
+
gap: 1,
|
|
21
|
+
p: 2,
|
|
22
|
+
// py: 1.2,
|
|
23
|
+
fontWeight: 500,
|
|
24
|
+
} },
|
|
25
|
+
react_1.default.createElement(material_1.ListItemText, { primary: user.name, secondary: user.email })),
|
|
26
|
+
react_1.default.createElement(material_1.Divider, { style: { margin: 0 } }),
|
|
27
|
+
react_1.default.createElement(material_1.MenuItem, { onClick: onLogOut, sx: {
|
|
28
|
+
gap: 1,
|
|
29
|
+
py: 1.2,
|
|
30
|
+
fontWeight: 500,
|
|
31
|
+
color: "error.main",
|
|
32
|
+
"&:hover": {
|
|
33
|
+
backgroundColor: "rgba(211, 47, 47, 0.08)",
|
|
34
|
+
},
|
|
35
|
+
} },
|
|
36
|
+
react_1.default.createElement(md_1.MdLogout, { size: 20 }),
|
|
37
|
+
"Sair"))));
|
|
38
|
+
};
|
|
39
|
+
exports.UserDropdownMenu = UserDropdownMenu;
|
|
40
|
+
//# sourceMappingURL=userDropdownMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"userDropdownMenu.js","sourceRoot":"","sources":["../../../src/auth/userDropdownMenu.tsx"],"names":[],"mappings":";;;;AAAA,4CAA4F;AAE5F,0DAAyB;AACzB,uCAAyC;AAWlC,MAAM,gBAAgB,GAAG,CAAC,EAC/B,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,SAAS,GACH,EAAE,EAAE;IACV,OAAO,CACL;QACE,8BAAC,eAAI,IACH,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,EACzD,eAAe,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,EACzD,UAAU,EAAE;gBACV,EAAE,EAAE;oBACF,SAAS,EAAE,EAAE;oBACb,QAAQ,EAAE,GAAG;oBACb,YAAY,EAAE,CAAC;oBACf,SAAS,EAAE,6BAA6B;oBACxC,QAAQ,EAAE,QAAQ;iBACnB;aACF,EACD,aAAa,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;YAE/B,8BAAC,mBAAQ,IACP,OAAO,EAAE,SAAS,EAClB,EAAE,EAAE;oBACF,GAAG,EAAE,CAAC;oBACN,CAAC,EAAE,CAAC;oBACJ,WAAW;oBACX,UAAU,EAAE,GAAG;iBAChB;gBAED,8BAAC,uBAAY,IACX,OAAO,EAAE,IAAI,CAAC,IAAI,EAClB,SAAS,EAAE,IAAI,CAAC,KAAK,GACrB,CACO;YAEX,8BAAC,kBAAO,IAAC,KAAK,EAAE,EAAC,MAAM,EAAE,CAAC,EAAC,GAAG;YAG9B,8BAAC,mBAAQ,IACP,OAAO,EAAE,QAAQ,EACjB,EAAE,EAAE;oBACF,GAAG,EAAE,CAAC;oBACN,EAAE,EAAE,GAAG;oBACP,UAAU,EAAE,GAAG;oBACf,KAAK,EAAE,YAAY;oBACnB,SAAS,EAAE;wBACT,eAAe,EAAE,yBAAyB;qBAC3C;iBACF;gBAED,8BAAC,aAAQ,IAAC,IAAI,EAAE,EAAE,GAAI;uBAEb,CACN,CACN,CACJ,CAAA;AACH,CAAC,CAAA;AA/DY,QAAA,gBAAgB,oBA+D5B"}
|
|
@@ -2,34 +2,30 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.UserOptionsComponent = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
-
const
|
|
5
|
+
const Person_1 = tslib_1.__importDefault(require("@mui/icons-material/Person"));
|
|
6
6
|
const material_1 = require("@mui/material");
|
|
7
7
|
const react_1 = tslib_1.__importStar(require("react"));
|
|
8
8
|
const react_redux_1 = require("react-redux");
|
|
9
9
|
const authentication_slice_1 = require("./authentication.slice");
|
|
10
|
+
const userDropdownMenu_1 = require("./userDropdownMenu");
|
|
10
11
|
const UserOptionsComponent = ({ user, datacenterAuthBaseUrl, onLogOut }) => {
|
|
11
12
|
const dispatch = (0, react_redux_1.useDispatch)();
|
|
12
13
|
const [menuAnchor, setAnchorElemnt] = (0, react_1.useState)(null);
|
|
13
14
|
const openMenu = Boolean(menuAnchor);
|
|
14
15
|
return react_1.default.createElement(react_1.default.Fragment, null,
|
|
15
|
-
react_1.default.createElement(
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
if (onLogOut)
|
|
26
|
-
onLogOut();
|
|
27
|
-
setAnchorElemnt(null);
|
|
28
|
-
} },
|
|
29
|
-
react_1.default.createElement(Logout_1.default, null),
|
|
30
|
-
" Sair")),
|
|
16
|
+
react_1.default.createElement(userDropdownMenu_1.UserDropdownMenu, { user: user, anchorEl: menuAnchor, open: openMenu, onClose: () => setAnchorElemnt(null), onLogOut: () => {
|
|
17
|
+
dispatch((0, authentication_slice_1.authenticationStateLogout)());
|
|
18
|
+
if (onLogOut)
|
|
19
|
+
onLogOut();
|
|
20
|
+
setAnchorElemnt(null);
|
|
21
|
+
}, onProfile: () => {
|
|
22
|
+
let authUrl = `${datacenterAuthBaseUrl}/profile`;
|
|
23
|
+
window.open(authUrl, '_blank')?.focus();
|
|
24
|
+
setAnchorElemnt(null);
|
|
25
|
+
} }),
|
|
31
26
|
react_1.default.createElement(material_1.IconButton, { onClick: e => setAnchorElemnt(e.currentTarget) },
|
|
32
|
-
react_1.default.createElement(material_1.Avatar, { src: user.imageUrl }
|
|
27
|
+
react_1.default.createElement(material_1.Avatar, { src: user.imageUrl },
|
|
28
|
+
react_1.default.createElement(Person_1.default, null))));
|
|
33
29
|
};
|
|
34
30
|
exports.UserOptionsComponent = UserOptionsComponent;
|
|
35
31
|
//# sourceMappingURL=userOptions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userOptions.js","sourceRoot":"","sources":["../../../src/auth/userOptions.tsx"],"names":[],"mappings":";;;;AAAA,gFAAmD;AACnD,
|
|
1
|
+
{"version":3,"file":"userOptions.js","sourceRoot":"","sources":["../../../src/auth/userOptions.tsx"],"names":[],"mappings":";;;;AAAA,gFAAmD;AACnD,4CAAkD;AAElD,uDAAuC;AACvC,6CAAyC;AACzC,iEAAkE;AAClE,yDAAqD;AAQ9C,MAAM,oBAAoB,GAAyC,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,QAAQ,EAAE,EAAE,EAAE;IACtH,MAAM,QAAQ,GAAG,IAAA,yBAAW,GAAO,CAAA;IACnC,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,GAAG,IAAA,gBAAQ,EAA+C,IAAI,CAAC,CAAA;IAClG,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IAEpC,OAAO;QACL,8BAAC,mCAAgB,IACf,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,UAAU,EACpB,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,EACpC,QAAQ,EAAE,GAAG,EAAE;gBACb,QAAQ,CAAC,IAAA,gDAAyB,GAAE,CAAC,CAAA;gBACrC,IAAI,QAAQ;oBAAE,QAAQ,EAAE,CAAA;gBACxB,eAAe,CAAC,IAAI,CAAC,CAAA;YACvB,CAAC,EACD,SAAS,EAAE,GAAG,EAAE;gBACd,IAAI,OAAO,GAAG,GAAG,qBAAqB,UAAU,CAAA;gBAChD,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAA;gBACvC,eAAe,CAAC,IAAI,CAAC,CAAA;YACvB,CAAC,GACD;QAEF,8BAAC,qBAAU,IACT,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC;YAC/C,8BAAC,iBAAM,IAAC,GAAG,EAAE,IAAI,CAAC,QAAQ;gBACvB,8BAAC,gBAAU,OAAG,CACP,CAAa,CACvB,CAAA;AACL,CAAC,CAAA;AA7BY,QAAA,oBAAoB,wBA6BhC"}
|
|
@@ -17,7 +17,6 @@ export const AuthCheckComponent = ({ authenticationState, baseApiUrl, children }
|
|
|
17
17
|
navigate(newPath, { replace: true });
|
|
18
18
|
};
|
|
19
19
|
useEffect(() => {
|
|
20
|
-
// if (!authenticationState.payload && !authenticationState.options?.loading) {
|
|
21
20
|
if (!new AuthenticationStateHelper({ state: authenticationState }).authenticated && !authenticationState.options?.loading) {
|
|
22
21
|
if (authUuid) {
|
|
23
22
|
dispatch(authenticationStateLoadFromApi({
|
|
@@ -31,16 +30,14 @@ export const AuthCheckComponent = ({ authenticationState, baseApiUrl, children }
|
|
|
31
30
|
}));
|
|
32
31
|
}
|
|
33
32
|
}
|
|
34
|
-
// else if (authenticationState.payload && authUuid) {
|
|
35
33
|
else if (new AuthenticationStateHelper({ state: authenticationState }).authenticated && authUuid) {
|
|
36
|
-
// caso o usuario ja tenha logado e
|
|
34
|
+
// caso o usuario ja tenha logado e tenta acessar a pagina de autenticacao, o redirect manda o authUuid
|
|
37
35
|
// nesse cenario, deve-se eliminar o authUuid da url
|
|
38
36
|
// isso vale para autenticacao em um dominio diferente do dominio do autenticador
|
|
39
37
|
// para recursos no mesmo dominio do autenticador, o redirect quando o usuario já tem autenticado esta correto, ou seja,
|
|
40
|
-
// ele nao manda o authUuid caso o usuario já esteja logado, em
|
|
38
|
+
// ele nao manda o authUuid caso o usuario já esteja logado, em dominios diferentes nao tem como o autenticador saber se o app esta logado
|
|
41
39
|
onGetAuthFinish();
|
|
42
40
|
}
|
|
43
|
-
// }, [authenticationState, location]);
|
|
44
41
|
}, [authenticationState]);
|
|
45
42
|
return React.createElement(React.Fragment, null, children);
|
|
46
43
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authCheck.js","sourceRoot":"","sources":["../../../src/auth/authCheck.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAsC,MAAM,0BAA0B,CAAC;AAClG,OAAO,KAAK,EAAE,EAAa,SAAS,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,8BAA8B,EAAwB,MAAM,wBAAwB,CAAC;AACzH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAQxC,MAAM,CAAC,MAAM,kBAAkB,GAAuC,CAAC,EAAE,mBAAmB,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;IACtH,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAC9B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAC9B,MAAM,QAAQ,GAAG,WAAW,EAAO,CAAA;IACnC,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IACxD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAA;IAEnE,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,GAAG,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC1E,QAAQ,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb
|
|
1
|
+
{"version":3,"file":"authCheck.js","sourceRoot":"","sources":["../../../src/auth/authCheck.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAsC,MAAM,0BAA0B,CAAC;AAClG,OAAO,KAAK,EAAE,EAAa,SAAS,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,8BAA8B,EAAwB,MAAM,wBAAwB,CAAC;AACzH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAQxC,MAAM,CAAC,MAAM,kBAAkB,GAAuC,CAAC,EAAE,mBAAmB,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;IACtH,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAC9B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAC9B,MAAM,QAAQ,GAAG,WAAW,EAAO,CAAA;IACnC,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IACxD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAA;IAEnE,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,GAAG,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC1E,QAAQ,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI,yBAAyB,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC,aAAa,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;YAC1H,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,8BAA8B,CAAC;oBACtC,UAAU;oBACV,cAAc,EAAE;wBACd,IAAI,EAAE,kBAAkB,CAAC,IAAI;wBAC7B,IAAI,EAAE,QAAQ;qBACuB;oBACvC,SAAS,EAAE,eAAe;oBAC1B,OAAO,EAAE,eAAe;iBACzB,CAAC,CAAC,CAAA;YACL,CAAC;QACH,CAAC;aACI,IAAI,IAAI,yBAAyB,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC,aAAa,IAAI,QAAQ,EAAE,CAAC;YACjG,uGAAuG;YACvG,oDAAoD;YACpD,iFAAiF;YACjF,yHAAyH;YACzH,0IAA0I;YAC1I,eAAe,EAAE,CAAA;QACnB,CAAC;IACH,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAE1B,OAAO,0CAAG,QAAQ,CAAI,CAAA;AACxB,CAAC,CAAC"}
|
|
@@ -2,21 +2,25 @@ import React, { useEffect } from "react";
|
|
|
2
2
|
import { useLocation } from "react-router-dom";
|
|
3
3
|
import { AuthenticationStateHelper } from "./authentication.slice";
|
|
4
4
|
import { AuthUtils } from "./authUtils";
|
|
5
|
-
export const AuthRequiredComponent = ({ authenticationState, authUrlBase, redirectUrl,
|
|
5
|
+
export const AuthRequiredComponent = ({ authenticationState, authUrlBase, redirectUrl, children }) => {
|
|
6
6
|
const location = useLocation();
|
|
7
7
|
const queryParams = new URLSearchParams(location.search);
|
|
8
8
|
const authUuid = queryParams.get(AuthUtils.authUuidQueryStringName);
|
|
9
9
|
useEffect(() => {
|
|
10
|
-
// if (!authenticationState.payload && !authenticationState.options?.loading) {
|
|
11
10
|
if (!new AuthenticationStateHelper({ state: authenticationState, }).authenticated && !authenticationState.options?.loading) {
|
|
12
11
|
if (!authUuid) {
|
|
13
12
|
if (!authUrlBase.includes('/login'))
|
|
14
13
|
authUrlBase = `${authUrlBase}/login`;
|
|
14
|
+
localStorage.clear();
|
|
15
|
+
sessionStorage.clear();
|
|
16
|
+
document.cookie.split(";").forEach(cookie => {
|
|
17
|
+
const name = cookie.split("=")[0].trim();
|
|
18
|
+
document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;
|
|
19
|
+
});
|
|
15
20
|
window.location.href = `${authUrlBase}?${AuthUtils.authToRedirectQueryStringName}=${encodeURIComponent(redirectUrl)}`;
|
|
16
21
|
}
|
|
17
22
|
}
|
|
18
23
|
}, [authenticationState]);
|
|
19
|
-
// if (!authenticationState.payload) {
|
|
20
24
|
if (!new AuthenticationStateHelper({ state: authenticationState, }).authenticated) {
|
|
21
25
|
return null;
|
|
22
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authRequired.js","sourceRoot":"","sources":["../../../src/auth/authRequired.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAa,SAAS,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAwB,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"authRequired.js","sourceRoot":"","sources":["../../../src/auth/authRequired.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAa,SAAS,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAwB,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AASxC,MAAM,CAAC,MAAM,qBAAqB,GAA0C,CAAC,EAAE,mBAAmB,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC1I,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAC9B,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IACxD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAA;IAEnE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI,yBAAyB,CAAC,EAAE,KAAK,EAAE,mBAAmB,GAAG,CAAC,CAAC,aAAa,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;YAC3H,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBACjC,WAAW,GAAG,GAAG,WAAW,QAAQ,CAAA;gBAEtC,YAAY,CAAC,KAAK,EAAE,CAAA;gBACpB,cAAc,CAAC,KAAK,EAAE,CAAA;gBACtB,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACzC,QAAQ,CAAC,MAAM,GAAG,GAAG,IAAI,mDAAmD,CAAC;gBAC/E,CAAC,CAAC,CAAC;gBAEH,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,WAAW,IAAI,SAAS,CAAC,6BAA6B,IAAI,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAA;YACvH,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAE1B,IAAI,CAAC,IAAI,yBAAyB,CAAC,EAAE,KAAK,EAAE,mBAAmB,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;QAClF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,0CAAG,QAAQ,CAAI,CAAA;AACxB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authentication.slice.js","sourceRoot":"","sources":["../../../src/auth/authentication.slice.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"authentication.slice.js","sourceRoot":"","sources":["../../../src/auth/authentication.slice.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Divider, ListItemText, Menu, MenuItem } from "@mui/material";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { MdLogout } from "react-icons/md";
|
|
4
|
+
export const UserDropdownMenu = ({ user, anchorEl, open, onClose, onLogOut, onProfile, }) => {
|
|
5
|
+
return (React.createElement(React.Fragment, null,
|
|
6
|
+
React.createElement(Menu, { anchorEl: anchorEl, open: open, onClose: onClose, anchorOrigin: { vertical: "bottom", horizontal: "right" }, transformOrigin: { vertical: "top", horizontal: "right" }, PaperProps: {
|
|
7
|
+
sx: {
|
|
8
|
+
marginTop: .5,
|
|
9
|
+
minWidth: 260,
|
|
10
|
+
borderRadius: 2,
|
|
11
|
+
boxShadow: "0 8px 24px rgba(0,0,0,0.12)",
|
|
12
|
+
overflow: "hidden",
|
|
13
|
+
},
|
|
14
|
+
}, MenuListProps: { sx: { p: 0 } } },
|
|
15
|
+
React.createElement(MenuItem, { onClick: onProfile, sx: {
|
|
16
|
+
gap: 1,
|
|
17
|
+
p: 2,
|
|
18
|
+
// py: 1.2,
|
|
19
|
+
fontWeight: 500,
|
|
20
|
+
} },
|
|
21
|
+
React.createElement(ListItemText, { primary: user.name, secondary: user.email })),
|
|
22
|
+
React.createElement(Divider, { style: { margin: 0 } }),
|
|
23
|
+
React.createElement(MenuItem, { onClick: onLogOut, sx: {
|
|
24
|
+
gap: 1,
|
|
25
|
+
py: 1.2,
|
|
26
|
+
fontWeight: 500,
|
|
27
|
+
color: "error.main",
|
|
28
|
+
"&:hover": {
|
|
29
|
+
backgroundColor: "rgba(211, 47, 47, 0.08)",
|
|
30
|
+
},
|
|
31
|
+
} },
|
|
32
|
+
React.createElement(MdLogout, { size: 20 }),
|
|
33
|
+
"Sair"))));
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=userDropdownMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"userDropdownMenu.js","sourceRoot":"","sources":["../../../src/auth/userDropdownMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAyB,MAAM,eAAe,CAAA;AAE5F,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAWzC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAC/B,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,SAAS,GACH,EAAE,EAAE;IACV,OAAO,CACL;QACE,oBAAC,IAAI,IACH,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,EACzD,eAAe,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,EACzD,UAAU,EAAE;gBACV,EAAE,EAAE;oBACF,SAAS,EAAE,EAAE;oBACb,QAAQ,EAAE,GAAG;oBACb,YAAY,EAAE,CAAC;oBACf,SAAS,EAAE,6BAA6B;oBACxC,QAAQ,EAAE,QAAQ;iBACnB;aACF,EACD,aAAa,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;YAE/B,oBAAC,QAAQ,IACP,OAAO,EAAE,SAAS,EAClB,EAAE,EAAE;oBACF,GAAG,EAAE,CAAC;oBACN,CAAC,EAAE,CAAC;oBACJ,WAAW;oBACX,UAAU,EAAE,GAAG;iBAChB;gBAED,oBAAC,YAAY,IACX,OAAO,EAAE,IAAI,CAAC,IAAI,EAClB,SAAS,EAAE,IAAI,CAAC,KAAK,GACrB,CACO;YAEX,oBAAC,OAAO,IAAC,KAAK,EAAE,EAAC,MAAM,EAAE,CAAC,EAAC,GAAG;YAG9B,oBAAC,QAAQ,IACP,OAAO,EAAE,QAAQ,EACjB,EAAE,EAAE;oBACF,GAAG,EAAE,CAAC;oBACN,EAAE,EAAE,GAAG;oBACP,UAAU,EAAE,GAAG;oBACf,KAAK,EAAE,YAAY;oBACnB,SAAS,EAAE;wBACT,eAAe,EAAE,yBAAyB;qBAC3C;iBACF;gBAED,oBAAC,QAAQ,IAAC,IAAI,EAAE,EAAE,GAAI;uBAEb,CACN,CACN,CACJ,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -1,30 +1,26 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { Avatar, IconButton
|
|
1
|
+
import PersonIcon from "@mui/icons-material/Person";
|
|
2
|
+
import { Avatar, IconButton } from "@mui/material";
|
|
3
3
|
import React, { useState } from "react";
|
|
4
4
|
import { useDispatch } from 'react-redux';
|
|
5
5
|
import { authenticationStateLogout } from './authentication.slice';
|
|
6
|
+
import { UserDropdownMenu } from './userDropdownMenu';
|
|
6
7
|
export const UserOptionsComponent = ({ user, datacenterAuthBaseUrl, onLogOut }) => {
|
|
7
8
|
const dispatch = useDispatch();
|
|
8
9
|
const [menuAnchor, setAnchorElemnt] = useState(null);
|
|
9
10
|
const openMenu = Boolean(menuAnchor);
|
|
10
11
|
return React.createElement(React.Fragment, null,
|
|
11
|
-
React.createElement(
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
if (onLogOut)
|
|
22
|
-
onLogOut();
|
|
23
|
-
setAnchorElemnt(null);
|
|
24
|
-
} },
|
|
25
|
-
React.createElement(LogoutIcon, null),
|
|
26
|
-
" Sair")),
|
|
12
|
+
React.createElement(UserDropdownMenu, { user: user, anchorEl: menuAnchor, open: openMenu, onClose: () => setAnchorElemnt(null), onLogOut: () => {
|
|
13
|
+
dispatch(authenticationStateLogout());
|
|
14
|
+
if (onLogOut)
|
|
15
|
+
onLogOut();
|
|
16
|
+
setAnchorElemnt(null);
|
|
17
|
+
}, onProfile: () => {
|
|
18
|
+
let authUrl = `${datacenterAuthBaseUrl}/profile`;
|
|
19
|
+
window.open(authUrl, '_blank')?.focus();
|
|
20
|
+
setAnchorElemnt(null);
|
|
21
|
+
} }),
|
|
27
22
|
React.createElement(IconButton, { onClick: e => setAnchorElemnt(e.currentTarget) },
|
|
28
|
-
React.createElement(Avatar, { src: user.imageUrl }
|
|
23
|
+
React.createElement(Avatar, { src: user.imageUrl },
|
|
24
|
+
React.createElement(PersonIcon, null))));
|
|
29
25
|
};
|
|
30
26
|
//# sourceMappingURL=userOptions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userOptions.js","sourceRoot":"","sources":["../../../src/auth/userOptions.tsx"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,4BAA4B,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"userOptions.js","sourceRoot":"","sources":["../../../src/auth/userOptions.tsx"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,4BAA4B,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAElD,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAQrD,MAAM,CAAC,MAAM,oBAAoB,GAAyC,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,QAAQ,EAAE,EAAE,EAAE;IACtH,MAAM,QAAQ,GAAG,WAAW,EAAO,CAAA;IACnC,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,GAAG,QAAQ,CAA+C,IAAI,CAAC,CAAA;IAClG,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IAEpC,OAAO;QACL,oBAAC,gBAAgB,IACf,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,UAAU,EACpB,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,EACpC,QAAQ,EAAE,GAAG,EAAE;gBACb,QAAQ,CAAC,yBAAyB,EAAE,CAAC,CAAA;gBACrC,IAAI,QAAQ;oBAAE,QAAQ,EAAE,CAAA;gBACxB,eAAe,CAAC,IAAI,CAAC,CAAA;YACvB,CAAC,EACD,SAAS,EAAE,GAAG,EAAE;gBACd,IAAI,OAAO,GAAG,GAAG,qBAAqB,UAAU,CAAA;gBAChD,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAA;gBACvC,eAAe,CAAC,IAAI,CAAC,CAAA;YACvB,CAAC,GACD;QAEF,oBAAC,UAAU,IACT,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC;YAC/C,oBAAC,MAAM,IAAC,GAAG,EAAE,IAAI,CAAC,QAAQ;gBACvB,oBAAC,UAAU,OAAG,CACP,CAAa,CACvB,CAAA;AACL,CAAC,CAAA"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { PayloadAction } from '@reduxjs/toolkit';
|
|
1
2
|
import { IAuthentication, IAuthenticationRequestBodyDefault, IAuthenticationRequestBodyFromGoogleToken, IAuthenticationRequestBodyFromUuid, IUser } from 'datacenter-lib-common-ts';
|
|
2
3
|
export interface IAuthenticationExt extends IAuthentication {
|
|
3
4
|
user: IUser;
|
|
@@ -24,13 +25,10 @@ export declare const authenticationStateLoadFromApi: import("@reduxjs/toolkit").
|
|
|
24
25
|
rejectedMeta?: unknown;
|
|
25
26
|
}>;
|
|
26
27
|
export declare const authenticationSlice: import("@reduxjs/toolkit").Slice<IAuthenticationState, {
|
|
27
|
-
set: (state: import("immer/dist/internal").WritableDraft<IAuthenticationState>, action:
|
|
28
|
-
payload: any;
|
|
29
|
-
type: string;
|
|
30
|
-
}) => void;
|
|
28
|
+
set: (state: import("immer/dist/internal").WritableDraft<IAuthenticationState>, action: PayloadAction<IAuthenticationState>) => void;
|
|
31
29
|
logout: (state: import("immer/dist/internal").WritableDraft<IAuthenticationState>) => void;
|
|
32
30
|
}, "authenticationSlice">;
|
|
33
|
-
export declare const authenticationStateLogout: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"authenticationSlice/logout">, authenticationStateSet: import("@reduxjs/toolkit").ActionCreatorWithPayload<
|
|
31
|
+
export declare const authenticationStateLogout: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"authenticationSlice/logout">, authenticationStateSet: import("@reduxjs/toolkit").ActionCreatorWithPayload<IAuthenticationState, "authenticationSlice/set">;
|
|
34
32
|
declare const _default: import("redux").Reducer<IAuthenticationState>;
|
|
35
33
|
export default _default;
|
|
36
34
|
export declare class AuthenticationStateHelper {
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { PopoverVirtualElement } from "@mui/material";
|
|
2
|
+
import { IUser } from "datacenter-lib-common-ts";
|
|
3
|
+
import React from "react";
|
|
4
|
+
interface Props {
|
|
5
|
+
user: IUser;
|
|
6
|
+
anchorEl?: Element | PopoverVirtualElement | (() => Element) | (() => PopoverVirtualElement) | null | undefined;
|
|
7
|
+
open: boolean;
|
|
8
|
+
onClose?: () => void;
|
|
9
|
+
onLogOut?: () => void;
|
|
10
|
+
onProfile?: () => void;
|
|
11
|
+
}
|
|
12
|
+
export declare const UserDropdownMenu: ({ user, anchorEl, open, onClose, onLogOut, onProfile, }: Props) => React.JSX.Element;
|
|
13
|
+
export {};
|
package/package.json
CHANGED
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"release:minor": "standard-version -m && git add CHANGELOG.md && git commit -m \"updated CHANGELOG.md\" && npm version minor && git push origin && git push origin --tags && npm publish --access public",
|
|
62
62
|
"release:patch": "standard-version -p && git add CHANGELOG.md && git commit -m \"updated CHANGELOG.md\" && npm version patch && git push origin && git push origin --tags && npm publish --access public"
|
|
63
63
|
},
|
|
64
|
-
"version": "1.0.
|
|
64
|
+
"version": "1.0.7",
|
|
65
65
|
"exports": {
|
|
66
66
|
".": {
|
|
67
67
|
"require": "./dist/cjs/index.js",
|
package/src/auth/authCheck.tsx
CHANGED
|
@@ -27,7 +27,6 @@ export const AuthCheckComponent: React.FC<IAuthCheckComponentProps> = ({ authent
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
useEffect(() => {
|
|
30
|
-
// if (!authenticationState.payload && !authenticationState.options?.loading) {
|
|
31
30
|
if (!new AuthenticationStateHelper({ state: authenticationState }).authenticated && !authenticationState.options?.loading) {
|
|
32
31
|
if (authUuid) {
|
|
33
32
|
dispatch(authenticationStateLoadFromApi({
|
|
@@ -41,16 +40,14 @@ export const AuthCheckComponent: React.FC<IAuthCheckComponentProps> = ({ authent
|
|
|
41
40
|
}))
|
|
42
41
|
}
|
|
43
42
|
}
|
|
44
|
-
// else if (authenticationState.payload && authUuid) {
|
|
45
43
|
else if (new AuthenticationStateHelper({ state: authenticationState }).authenticated && authUuid) {
|
|
46
|
-
// caso o usuario ja tenha logado e
|
|
44
|
+
// caso o usuario ja tenha logado e tenta acessar a pagina de autenticacao, o redirect manda o authUuid
|
|
47
45
|
// nesse cenario, deve-se eliminar o authUuid da url
|
|
48
46
|
// isso vale para autenticacao em um dominio diferente do dominio do autenticador
|
|
49
47
|
// para recursos no mesmo dominio do autenticador, o redirect quando o usuario já tem autenticado esta correto, ou seja,
|
|
50
|
-
// ele nao manda o authUuid caso o usuario já esteja logado, em
|
|
48
|
+
// ele nao manda o authUuid caso o usuario já esteja logado, em dominios diferentes nao tem como o autenticador saber se o app esta logado
|
|
51
49
|
onGetAuthFinish()
|
|
52
50
|
}
|
|
53
|
-
// }, [authenticationState, location]);
|
|
54
51
|
}, [authenticationState]);
|
|
55
52
|
|
|
56
53
|
return <>{children}</>
|
|
@@ -6,29 +6,34 @@ import { AuthUtils } from "./authUtils";
|
|
|
6
6
|
|
|
7
7
|
export interface IAuthRequiredComponentProps {
|
|
8
8
|
authenticationState: IAuthenticationState,
|
|
9
|
-
// baseApiUrl: string,
|
|
10
9
|
authUrlBase: string,
|
|
11
10
|
redirectUrl: string,
|
|
12
11
|
children: ReactNode;
|
|
13
12
|
}
|
|
14
13
|
|
|
15
|
-
export const AuthRequiredComponent: React.FC<IAuthRequiredComponentProps> = ({ authenticationState, authUrlBase, redirectUrl,
|
|
14
|
+
export const AuthRequiredComponent: React.FC<IAuthRequiredComponentProps> = ({ authenticationState, authUrlBase, redirectUrl, children }) => {
|
|
16
15
|
const location = useLocation()
|
|
17
16
|
const queryParams = new URLSearchParams(location.search)
|
|
18
17
|
const authUuid = queryParams.get(AuthUtils.authUuidQueryStringName)
|
|
19
18
|
|
|
20
19
|
useEffect(() => {
|
|
21
|
-
// if (!authenticationState.payload && !authenticationState.options?.loading) {
|
|
22
20
|
if (!new AuthenticationStateHelper({ state: authenticationState, }).authenticated && !authenticationState.options?.loading) {
|
|
23
21
|
if (!authUuid) {
|
|
24
22
|
if (!authUrlBase.includes('/login'))
|
|
25
23
|
authUrlBase = `${authUrlBase}/login`
|
|
24
|
+
|
|
25
|
+
localStorage.clear()
|
|
26
|
+
sessionStorage.clear()
|
|
27
|
+
document.cookie.split(";").forEach(cookie => {
|
|
28
|
+
const name = cookie.split("=")[0].trim();
|
|
29
|
+
document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;
|
|
30
|
+
});
|
|
31
|
+
|
|
26
32
|
window.location.href = `${authUrlBase}?${AuthUtils.authToRedirectQueryStringName}=${encodeURIComponent(redirectUrl)}`
|
|
27
33
|
}
|
|
28
34
|
}
|
|
29
35
|
}, [authenticationState]);
|
|
30
36
|
|
|
31
|
-
// if (!authenticationState.payload) {
|
|
32
37
|
if (!new AuthenticationStateHelper({ state: authenticationState, }).authenticated) {
|
|
33
38
|
return null;
|
|
34
39
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
|
|
1
|
+
import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';
|
|
2
2
|
import { AuthenticationsApiClient, IAuthentication, IAuthenticationRequestBodyDefault, IAuthenticationRequestBodyFromGoogleToken, IAuthenticationRequestBodyFromUuid, IAuthenticationTokenData, IUser } from 'datacenter-lib-common-ts';
|
|
3
3
|
import { WebUtils } from 'fwork-jsts-common';
|
|
4
4
|
import { jwtDecode } from 'jwt-decode'; // dont use jsonwebtokens package here, its only for node projects
|
|
@@ -63,7 +63,7 @@ export const authenticationSlice = createSlice({
|
|
|
63
63
|
name: 'authenticationSlice',
|
|
64
64
|
initialState: initState,
|
|
65
65
|
reducers: {
|
|
66
|
-
set: (state, action) => {
|
|
66
|
+
set: (state, action: PayloadAction<IAuthenticationState>) => {
|
|
67
67
|
state.payload = action.payload.payload
|
|
68
68
|
WebUtils.setCookie('@authenticationState', JSON.stringify(state), 1)
|
|
69
69
|
},
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { Divider, ListItemText, Menu, MenuItem, PopoverVirtualElement } from "@mui/material"
|
|
2
|
+
import { IUser } from "datacenter-lib-common-ts"
|
|
3
|
+
import React from "react"
|
|
4
|
+
import { MdLogout } from "react-icons/md"
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
user: IUser,
|
|
8
|
+
anchorEl?: Element | PopoverVirtualElement | (() => Element) | (() => PopoverVirtualElement) | null | undefined
|
|
9
|
+
open: boolean
|
|
10
|
+
onClose?: () => void
|
|
11
|
+
onLogOut?: () => void
|
|
12
|
+
onProfile?: () => void
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export const UserDropdownMenu = ({
|
|
16
|
+
user,
|
|
17
|
+
anchorEl,
|
|
18
|
+
open,
|
|
19
|
+
onClose,
|
|
20
|
+
onLogOut,
|
|
21
|
+
onProfile,
|
|
22
|
+
}: Props) => {
|
|
23
|
+
return (
|
|
24
|
+
<>
|
|
25
|
+
<Menu
|
|
26
|
+
anchorEl={anchorEl}
|
|
27
|
+
open={open}
|
|
28
|
+
onClose={onClose}
|
|
29
|
+
anchorOrigin={{ vertical: "bottom", horizontal: "right" }}
|
|
30
|
+
transformOrigin={{ vertical: "top", horizontal: "right" }}
|
|
31
|
+
PaperProps={{
|
|
32
|
+
sx: {
|
|
33
|
+
marginTop: .5,
|
|
34
|
+
minWidth: 260,
|
|
35
|
+
borderRadius: 2,
|
|
36
|
+
boxShadow: "0 8px 24px rgba(0,0,0,0.12)",
|
|
37
|
+
overflow: "hidden",
|
|
38
|
+
},
|
|
39
|
+
}}
|
|
40
|
+
MenuListProps={{ sx: { p: 0 } }}
|
|
41
|
+
>
|
|
42
|
+
<MenuItem
|
|
43
|
+
onClick={onProfile}
|
|
44
|
+
sx={{
|
|
45
|
+
gap: 1,
|
|
46
|
+
p: 2,
|
|
47
|
+
// py: 1.2,
|
|
48
|
+
fontWeight: 500,
|
|
49
|
+
}}
|
|
50
|
+
>
|
|
51
|
+
<ListItemText
|
|
52
|
+
primary={user.name}
|
|
53
|
+
secondary={user.email}
|
|
54
|
+
/>
|
|
55
|
+
</MenuItem>
|
|
56
|
+
|
|
57
|
+
<Divider style={{margin: 0}}/>
|
|
58
|
+
|
|
59
|
+
{/* Logout */}
|
|
60
|
+
<MenuItem
|
|
61
|
+
onClick={onLogOut}
|
|
62
|
+
sx={{
|
|
63
|
+
gap: 1,
|
|
64
|
+
py: 1.2,
|
|
65
|
+
fontWeight: 500,
|
|
66
|
+
color: "error.main",
|
|
67
|
+
"&:hover": {
|
|
68
|
+
backgroundColor: "rgba(211, 47, 47, 0.08)",
|
|
69
|
+
},
|
|
70
|
+
}}
|
|
71
|
+
>
|
|
72
|
+
<MdLogout size={20} />
|
|
73
|
+
Sair
|
|
74
|
+
</MenuItem>
|
|
75
|
+
</Menu>
|
|
76
|
+
</>
|
|
77
|
+
)
|
|
78
|
+
}
|
package/src/auth/userOptions.tsx
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { Avatar, IconButton
|
|
1
|
+
import PersonIcon from "@mui/icons-material/Person"
|
|
2
|
+
import { Avatar, IconButton } from "@mui/material"
|
|
3
3
|
import { IUser } from "datacenter-lib-common-ts"
|
|
4
4
|
import React, { useState } from "react"
|
|
5
5
|
import { useDispatch } from 'react-redux'
|
|
6
6
|
import { authenticationStateLogout } from './authentication.slice'
|
|
7
|
+
import { UserDropdownMenu } from './userDropdownMenu'
|
|
7
8
|
|
|
8
9
|
export interface IUserOptionsComponentProps {
|
|
9
10
|
user: IUser,
|
|
@@ -17,38 +18,27 @@ export const UserOptionsComponent: React.FC<IUserOptionsComponentProps> = ({ use
|
|
|
17
18
|
const openMenu = Boolean(menuAnchor)
|
|
18
19
|
|
|
19
20
|
return <>
|
|
20
|
-
<
|
|
21
|
-
|
|
21
|
+
<UserDropdownMenu
|
|
22
|
+
user={user}
|
|
22
23
|
anchorEl={menuAnchor}
|
|
23
24
|
open={openMenu}
|
|
24
25
|
onClose={() => setAnchorElemnt(null)}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
{user.name}
|
|
37
|
-
</MenuItem>
|
|
38
|
-
<MenuItem
|
|
39
|
-
style={{ display: 'flex', gap: 10 }}
|
|
40
|
-
onClick={() => {
|
|
41
|
-
dispatch(authenticationStateLogout())
|
|
42
|
-
if (onLogOut) onLogOut()
|
|
43
|
-
setAnchorElemnt(null)
|
|
44
|
-
}}
|
|
45
|
-
>
|
|
46
|
-
<LogoutIcon /> Sair
|
|
47
|
-
</MenuItem>
|
|
48
|
-
</Menu>
|
|
26
|
+
onLogOut={() => {
|
|
27
|
+
dispatch(authenticationStateLogout())
|
|
28
|
+
if (onLogOut) onLogOut()
|
|
29
|
+
setAnchorElemnt(null)
|
|
30
|
+
}}
|
|
31
|
+
onProfile={() => {
|
|
32
|
+
let authUrl = `${datacenterAuthBaseUrl}/profile`
|
|
33
|
+
window.open(authUrl, '_blank')?.focus()
|
|
34
|
+
setAnchorElemnt(null)
|
|
35
|
+
}}
|
|
36
|
+
/>
|
|
49
37
|
|
|
50
38
|
<IconButton
|
|
51
39
|
onClick={e => setAnchorElemnt(e.currentTarget)}
|
|
52
|
-
><Avatar src={user.imageUrl}
|
|
40
|
+
><Avatar src={user.imageUrl}>
|
|
41
|
+
<PersonIcon />
|
|
42
|
+
</Avatar></IconButton>
|
|
53
43
|
</>
|
|
54
44
|
}
|