From b617d59b6915c1199a4936c6ffacf956190b578b Mon Sep 17 00:00:00 2001 From: Tudor Stanciu Date: Mon, 20 Mar 2023 18:49:35 +0200 Subject: [PATCH] User profile page --- .env | 4 +- public/locales/en/translations.json | 20 +++- public/locales/ro/translations.json | 20 +++- .../images/DefaultUserProfilePicture.png | Bin 0 -> 90948 bytes src/components/layout/AppRoutes.js | 4 +- src/components/layout/Sidebar.js | 7 ++ .../login/components/LoggedInComponent.js | 111 ----------------- .../login/components/LoginContainer.js | 31 ++--- src/features/login/styles.js | 16 --- .../network/components/NetworkContainer.js | 2 - .../notes/components/NotesContainer.js | 33 ------ .../components/UserProfileCardContent.js | 112 ++++++++++++++++++ .../components/UserProfileContainer.js | 47 ++++++++ .../profile/components/UserProfilePicture.js | 21 ++++ src/features/user/profile/styles.js | 12 ++ src/utils/camelizeKeys.js | 31 +++++ 16 files changed, 271 insertions(+), 200 deletions(-) create mode 100644 src/assets/images/DefaultUserProfilePicture.png delete mode 100644 src/features/login/components/LoggedInComponent.js delete mode 100644 src/features/notes/components/NotesContainer.js create mode 100644 src/features/user/profile/components/UserProfileCardContent.js create mode 100644 src/features/user/profile/components/UserProfileContainer.js create mode 100644 src/features/user/profile/components/UserProfilePicture.js create mode 100644 src/features/user/profile/styles.js create mode 100644 src/utils/camelizeKeys.js diff --git a/.env b/.env index 9cd8b93..c6fe26f 100644 --- a/.env +++ b/.env @@ -1,6 +1,6 @@ -#REACT_APP_TUITIO_URL=http://localhost:5063/identity/authenticate?UserName={username}&Password={password} - +#REACT_APP_TUITIO_URL=http://localhost:5063 REACT_APP_TUITIO_URL=https://lab.code-rove.com/tuitio + #REACT_APP_NETWORK_RESURRECTOR_API_URL=http://localhost:5064 REACT_APP_NETWORK_RESURRECTOR_API_URL=https://lab.code-rove.com/network-resurrector-api diff --git a/public/locales/en/translations.json b/public/locales/en/translations.json index 0822ee5..fad2b45 100644 --- a/public/locales/en/translations.json +++ b/public/locales/en/translations.json @@ -12,9 +12,16 @@ "English": "English", "Romanian": "Romanian" }, + "Generic": { + "Copy": "Copy", + "OpenInNewTab": "Open in new tab", + "CopiedToClipboard": "Copied to clipboard", + "SendEmail": "Send email" + }, "Menu": { "Dashboard": "Dashboard", "Machines": "Machines", + "System": "System", "Trash": "Trash", "Settings": "Settings" }, @@ -22,12 +29,15 @@ "Username": "Username", "Password": "Password", "Label": "Login", - "ChangeUser": "Change user", - "UserChanged": "User changed", "Logout": "Logout", - "IncorrectCredentials": "Incorrect credentials.", - "Hello": "Hi, {{username}}", - "AuthenticationDate": "Authentication date" + "IncorrectCredentials": "Incorrect credentials." + }, + "User": { + "Profile": { + "Hello": "Hi, {{userName}}", + "Description": "{{userName}}, authenticated on {{loginDate}}", + "OpenPortfolio": "Open portfolio" + } }, "Machine": { "FullName": "Full machine name", diff --git a/public/locales/ro/translations.json b/public/locales/ro/translations.json index 51c3bd0..e13005e 100644 --- a/public/locales/ro/translations.json +++ b/public/locales/ro/translations.json @@ -3,9 +3,16 @@ "English": "Engleză", "Romanian": "Română" }, + "Generic": { + "Copy": "Copiază", + "OpenInNewTab": "Deschide într-un tab nou", + "CopiedToClipboard": "Copiat în clipboard", + "SendEmail": "Trimite email" + }, "Menu": { "Dashboard": "Bord", "Machines": "Mașini", + "System": "Sistem", "Trash": "Gunoi", "Settings": "Setări" }, @@ -13,12 +20,15 @@ "Username": "Utilizator", "Password": "Parolă", "Label": "Autentificare", - "ChangeUser": "Schimbă utilizatorul", - "UserChanged": "Utilizator schimbat", "Logout": "Deconectare", - "IncorrectCredentials": "Credențiale incorecte.", - "Hello": "Salut, {{username}}", - "AuthenticationDate": "Momentul autentificării" + "IncorrectCredentials": "Credențiale incorecte." + }, + "User": { + "Profile": { + "Hello": "Salut, {{userName}}", + "Description": "{{userName}}, autentificat pe {{loginDate}}", + "OpenPortfolio": "Deschide portofoliu" + } }, "Machine": { "FullName": "Nume intreg masina", diff --git a/src/assets/images/DefaultUserProfilePicture.png b/src/assets/images/DefaultUserProfilePicture.png new file mode 100644 index 0000000000000000000000000000000000000000..297be824c5363af31e96ea6c9aa6401f15ec5d5c GIT binary patch literal 90948 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�-3m(oeobr#D%wp6^mx z?We|Y{L1C>EtTRnU$ICxx>noGC-0>4-6`(M7w~q1fx>(7lM<14laod zAGyx18yk1X3cl-{)1Bs>N~K>=1WMrc9LAl#msGt-8g<}8&B2WuH!9y1;V=YO72fpR zXgDtqNb?Arsh>cc&-56q3^O{wwEYG6vSkaW@hb9gAZ&b3@y(a+Mu`^bJP*x;$&aeR zq!y%!GC_;jP*7MH+Er6yHBw^hf1#!k;qvfBv%`0sbEL-asw`XIZM6Bl>h{Jry+a~! zx460@odnBZisAUJ)2JK?c#JDf=jG;>l(eYYmavGZAZj+GcDC>5ctDn2)j)s0_@Is;?!kRE_DgqzP=J=@l#i?5rsDd;t)s37LgxnNN#IxE?TQ+?Zs-b z-;`L*?2&Bj`^oG1GHbrtZA+!&k8vJi#le!w9t)ND@h$jVTPhFJ9CCE^^~2eCYm&fQ z373_UPrpNcj%c#ok4Ft&bC9+8q}7=R z>n(T7Q^y9^Iz&$^rMP2v>wB^0_vdPCs4IG~s}togw4lxU!Y?MdDyqcC8UY&$*rTeZ z=3G`%67EYaU#aK9%FjQ(kE+!2b=aM%s+Cv`?rO1J`L=skP~Y|2z0~3b$pgx!nJ?WR zCRwE0rFoC+z0=mx9kp`Yo42W$=PfOo8n=Y_f3eK9w&(hTWUKC&wo{vmgLl45tNX<4 zAzAK+o)bpJN7L%d_60m_@H(-wdmhQ{nYLcadRaYMHH&U1LM$G4>Q%Qg=EpqiPJ7PR zFOCWZjm)X};ixS``px_5e*O(FTUA%!_{hqv@q3TnvgApaqZ)q9 zTdDY7ak@8ke%;}f1A$~Dz>sXE_-Ty>^kE>Rwf+*cKU){b2c|3jc*Iixc^PA6XoI zgnEn?Ke9F6F9v66)`gXiDbi|xFbvwyskI3|a-?2Q%U>aCQptZq^mB|-z4-(oh UnK#P^yAi~WZC0k)TU<~57in=CtpET3 literal 0 HcmV?d00001 diff --git a/src/components/layout/AppRoutes.js b/src/components/layout/AppRoutes.js index 69e207f..c841ae2 100644 --- a/src/components/layout/AppRoutes.js +++ b/src/components/layout/AppRoutes.js @@ -1,16 +1,16 @@ import React from "react"; import { Route, Switch } from "react-router-dom"; import PageNotFound from "./PageNotFound"; -import LoginContainer from "../../features/login/components/LoginContainer"; import NetworkContainer from "../../features/network/components/NetworkContainer"; import SettingsContainer from "../../features/settings/components/SettingsContainer"; import DashboardContainer from "../../features/dashboard/components/DashboardContainer"; +import UserProfileContainer from "../../features/user/profile/components/UserProfileContainer"; const AppRoutes = () => { return ( - + diff --git a/src/components/layout/Sidebar.js b/src/components/layout/Sidebar.js index 4c2aea1..a79af4e 100644 --- a/src/components/layout/Sidebar.js +++ b/src/components/layout/Sidebar.js @@ -15,6 +15,7 @@ import ChevronRightIcon from "@material-ui/icons/ChevronRight"; import ListItem from "@material-ui/core/ListItem"; import DeleteIcon from "@material-ui/icons/Delete"; import DnsIcon from "@material-ui/icons/Dns"; +import DeviceHubIcon from "@material-ui/icons/DeviceHub"; import SettingsIcon from "@material-ui/icons/Settings"; import DashboardIcon from "@material-ui/icons/Dashboard"; import { useHistory } from "react-router-dom"; @@ -74,6 +75,12 @@ const Sidebar = ({ open, handleDrawerClose }) => { + history.push("/system")}> + + + + + diff --git a/src/features/login/components/LoggedInComponent.js b/src/features/login/components/LoggedInComponent.js deleted file mode 100644 index 9b90404..0000000 --- a/src/features/login/components/LoggedInComponent.js +++ /dev/null @@ -1,111 +0,0 @@ -import React, { useState, useMemo } from "react"; -import PropTypes from "prop-types"; -import { makeStyles } from "@material-ui/core/styles"; -import { - Avatar, - Collapse, - Tooltip, - Divider, - Typography, - Card, - CardContent, - CardActions, - CardHeader, - IconButton -} from "@material-ui/core"; -import { AccountBox, RotateLeft, ExitToApp } from "@material-ui/icons"; -import LoginComponent from "./LoginComponent"; -import { useTranslation } from "react-i18next"; -import { useToast } from "../../../hooks"; -import styles from "../styles"; -import { useTuitioUser } from "@flare/tuitio-client-react"; - -const useStyles = makeStyles(styles); - -const LoggedInComponent = ({ credentials, onChange, onLogin, onLogout }) => { - const classes = useStyles(); - const { t } = useTranslation(); - const [expanded, setExpanded] = useState(false); - const { info } = useToast(); - const { userName } = useTuitioUser(); - - const handleExpandLogin = () => { - setExpanded(!expanded); - }; - - const loginDate = useMemo(() => { - const valueForDisplay = t("LONG_DATE", { date: new Date() }); - return valueForDisplay; - }, [t]); - - const handleLogin = async () => { - const result = await onLogin(); - if (result) { - setExpanded(false); - info(t("Login.UserChanged")); - } - }; - - return ( -
- - - - - } - title={{t("Login.Hello", { username: userName })}} - subheader={ - - - {loginDate} - - - } - /> - - - - - - - - - - - - - - - - - - - - -
- ); -}; - -LoggedInComponent.propTypes = { - credentials: PropTypes.object.isRequired, - onChange: PropTypes.func.isRequired, - onLogin: PropTypes.func.isRequired, - onLogout: PropTypes.func.isRequired -}; - -export default LoggedInComponent; diff --git a/src/features/login/components/LoginContainer.js b/src/features/login/components/LoginContainer.js index d14e5c7..8821de3 100644 --- a/src/features/login/components/LoginContainer.js +++ b/src/features/login/components/LoginContainer.js @@ -2,8 +2,7 @@ import React, { useState } from "react"; import LoginCard from "./LoginCard"; import { useToast } from "../../../hooks"; import { useTranslation } from "react-i18next"; -import LoggedInComponent from "./LoggedInComponent"; -import { useTuitioClient, useTuitioToken } from "@flare/tuitio-client-react"; +import { useTuitioClient } from "@flare/tuitio-client-react"; const LoginContainer = () => { const [credentials, setCredentials] = useState({ @@ -13,11 +12,10 @@ const LoginContainer = () => { const { error } = useToast(); const { t } = useTranslation(); - const { login, logout } = useTuitioClient({ + const { login } = useTuitioClient({ onLoginFailed: () => error(t("Login.IncorrectCredentials")), onLoginError: err => error(err.message) }); - const { valid: tokenIsValid } = useTuitioToken(); const handleChange = prop => event => { setCredentials(prev => ({ ...prev, [prop]: event.target.value })); @@ -28,27 +26,12 @@ const LoginContainer = () => { return login(userName, password); }; - const handleLogout = () => { - logout(); - }; - return ( - <> - {tokenIsValid ? ( - - ) : ( - - )} - + ); }; diff --git a/src/features/login/styles.js b/src/features/login/styles.js index 7b5308d..b295f9e 100644 --- a/src/features/login/styles.js +++ b/src/features/login/styles.js @@ -1,23 +1,7 @@ const styles = theme => ({ - loggedInCard: { - minWidth: 350 - }, onRight: { marginLeft: "auto" }, - avatar: { - backgroundColor: theme.palette.primary.main - }, - collapseContent: { - padding: 0 - }, - loggedInContent: { - minHeight: "80vh", - display: "flex", - alignItems: "center", - justifyContent: "center", - fontSize: "calc(10px + 2vmin)" - }, appLogin: { minHeight: "100vh", display: "flex", diff --git a/src/features/network/components/NetworkContainer.js b/src/features/network/components/NetworkContainer.js index 925925f..9866e45 100644 --- a/src/features/network/components/NetworkContainer.js +++ b/src/features/network/components/NetworkContainer.js @@ -1,6 +1,5 @@ import React from "react"; import MachinesContainer from "../../machines/components/MachinesContainer"; -//import NotesContainer from "../../notes/components/NotesContainer"; import { makeStyles } from "@material-ui/core/styles"; import styles from "../styles"; @@ -12,7 +11,6 @@ const NetworkContainer = () => { return (
- {/* */}
); }; diff --git a/src/features/notes/components/NotesContainer.js b/src/features/notes/components/NotesContainer.js deleted file mode 100644 index 6efc323..0000000 --- a/src/features/notes/components/NotesContainer.js +++ /dev/null @@ -1,33 +0,0 @@ -import React, { useContext } from "react"; -import { TextField, Button } from "@material-ui/core"; -import { - ApplicationStateContext, - ApplicationDispatchContext -} from "../../../state/ApplicationContexts"; - -const NotesContainer = () => { - const state = useContext(ApplicationStateContext); - const dispatchActions = useContext(ApplicationDispatchContext); - - const handleChange = prop => event => { - dispatchActions.onNetworkChange(prop, event.target.value); - }; - - return ( - <> - -
-
- - - ); -}; - -export default NotesContainer; diff --git a/src/features/user/profile/components/UserProfileCardContent.js b/src/features/user/profile/components/UserProfileCardContent.js new file mode 100644 index 0000000..75e5142 --- /dev/null +++ b/src/features/user/profile/components/UserProfileCardContent.js @@ -0,0 +1,112 @@ +import React from "react"; +import PropTypes from "prop-types"; +import { + Grid, + List, + ListItem, + ListItemText, + ListItemIcon, + Link, + IconButton, + Tooltip +} from "@material-ui/core"; +import UserProfilePicture from "./UserProfilePicture"; +import BusinessCenterIcon from "@material-ui/icons/BusinessCenter"; +import { FileCopyOutlined } from "@material-ui/icons"; +import EmailIcon from "@material-ui/icons/Email"; +import { useToast } from "../../../../hooks"; +import { useTranslation } from "react-i18next"; + +const UserProfileCardContent = ({ userData }) => { + const { email, profilePictureUrl } = userData; + const { t } = useTranslation(); + const { info } = useToast(); + + const handleCopyToClipboard = url => () => { + navigator.clipboard.writeText(url); + info(t("Generic.CopiedToClipboard")); + }; + + const handleEmailSending = event => { + window.location.href = `mailto:${email}`; + event.preventDefault(); + }; + + const userName = `${userData.firstName} ${userData.lastName}`; + + return ( + + + + + + + + + + + + + + + {userName} + + + } + /> + + + + + + + + {email} + + + } + /> + + {profilePictureUrl && ( + + + + + + + + + + + {profilePictureUrl} + + + } + /> + + )} + + + + + + ); +}; + +UserProfileCardContent.propTypes = { + userData: PropTypes.object.isRequired +}; + +export default UserProfileCardContent; diff --git a/src/features/user/profile/components/UserProfileContainer.js b/src/features/user/profile/components/UserProfileContainer.js new file mode 100644 index 0000000..7ae1fee --- /dev/null +++ b/src/features/user/profile/components/UserProfileContainer.js @@ -0,0 +1,47 @@ +import React, { useMemo } from "react"; +import { useTranslation } from "react-i18next"; +import { Card, CardHeader, CardContent } from "@material-ui/core"; +import { useTuitioToken } from "@flare/tuitio-client-react"; +import { camelizeKeys } from "../../../../utils/camelizeKeys"; +import PageTitle from "../../../../components/common/PageTitle"; +import UserProfileCardContent from "./UserProfileCardContent"; + +const UserProfileContainer = () => { + const { t } = useTranslation(); + const { token } = useTuitioToken(); + + const decodedToken = useMemo(() => atob(token), [token]); + const userData = useMemo( + () => camelizeKeys(JSON.parse(decodedToken)), + [decodedToken] + ); + console.log("userData", userData); + const userLoginDate = useMemo( + () => + t("DATE_FORMAT", { + date: { value: userData.createdAt, format: "DD-MM-YYYY HH:mm:ss" } + }), + [t, userData.createdAt] + ); + + const userDescription = t("User.Profile.Description", { + userName: `${userData.firstName} ${userData.lastName}`, + loginDate: userLoginDate + }); + + return ( + <> + + + + + + + + + ); +}; + +export default UserProfileContainer; diff --git a/src/features/user/profile/components/UserProfilePicture.js b/src/features/user/profile/components/UserProfilePicture.js new file mode 100644 index 0000000..6ca0002 --- /dev/null +++ b/src/features/user/profile/components/UserProfilePicture.js @@ -0,0 +1,21 @@ +import React from "react"; +import PropTypes from "prop-types"; +import { makeStyles } from "@material-ui/core/styles"; +import style from "../styles"; +import Avatar from "@material-ui/core/Avatar"; +import DefaultUserProfilePicture from "../../../../assets/images/DefaultUserProfilePicture.png"; + +const useStyles = makeStyles(style); + +const UserProfilePicture = ({ userData }) => { + const classes = useStyles(); + const { profilePictureUrl } = userData; + const url = profilePictureUrl ?? DefaultUserProfilePicture; + return ; +}; + +UserProfilePicture.propTypes = { + userData: PropTypes.object.isRequired +}; + +export default UserProfilePicture; diff --git a/src/features/user/profile/styles.js b/src/features/user/profile/styles.js new file mode 100644 index 0000000..e140522 --- /dev/null +++ b/src/features/user/profile/styles.js @@ -0,0 +1,12 @@ +const style = theme => { + return { + profilePicture: { + margin: "auto", + display: "block", + width: theme.spacing(25), + height: theme.spacing(25) + } + }; +}; + +export default style; diff --git a/src/utils/camelizeKeys.js b/src/utils/camelizeKeys.js new file mode 100644 index 0000000..5691b1f --- /dev/null +++ b/src/utils/camelizeKeys.js @@ -0,0 +1,31 @@ +function camelizeKeys(o) { + var newO, origKey, newKey, value; + if (o instanceof Array) { + return o.map(function (value) { + if (typeof value === "object") { + value = camelizeKeys(value); + } + return value; + }); + } else { + newO = {}; + for (origKey in o) { + if (Object.prototype.hasOwnProperty.call(o, origKey)) { + newKey = ( + origKey.charAt(0).toLowerCase() + origKey.slice(1) || origKey + ).toString(); + value = o[origKey]; + if ( + value instanceof Array || + (value !== null && value.constructor === Object) + ) { + value = camelizeKeys(value); + } + newO[newKey] = value; + } + } + } + return newO; +} + +export { camelizeKeys };