From a73a511fa4771957e2e995b1c8c7e2c4d7643376 Mon Sep 17 00:00:00 2001 From: SnippetsX Date: Wed, 6 Nov 2024 00:38:03 +0300 Subject: [PATCH] added working login page added login page wrong pass animation added backend connect with db added backend support for system monitor added perms check added sha256 hashing updated readme.md added screenshots fully db --- .gitignore | 3 +++ README.md | 6 ++++++ database.sql | 8 +++++--- package-lock.json | 7 +++++++ package.json | 1 + screenshots/screenshot1.png | Bin 0 -> 42564 bytes screenshots/screenshot2.png | Bin 0 -> 54666 bytes server.js | 13 ------------- src/Dashboard/DashboardMain.js | 12 +----------- src/Login/LoginPage.css | 9 +++++++++ src/Login/LoginPage.js | 24 ++++++++++++++++++------ src/Login/LoginServerSend.js | 7 ++++++- src/core/requestPerms.js | 15 +++++++++++++++ src/core/requestStats.js | 14 ++++++++++++++ src/widgets/WidgetsStatistics.js | 13 +++++++++++-- test.js | 1 + 16 files changed, 97 insertions(+), 36 deletions(-) create mode 100644 screenshots/screenshot1.png create mode 100644 screenshots/screenshot2.png delete mode 100644 server.js create mode 100644 src/core/requestPerms.js create mode 100644 src/core/requestStats.js create mode 100644 test.js diff --git a/.gitignore b/.gitignore index 4d29575..8c39a17 100644 --- a/.gitignore +++ b/.gitignore @@ -2,14 +2,17 @@ # dependencies /node_modules +*/node_modules /.pnp .pnp.js # testing /coverage +/serverside-agent # production /build +*/build # misc .DS_Store diff --git a/README.md b/README.md index 5babdeb..b3344b3 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,12 @@ # Admin Dashboard writed on React This project is a simple admin panel designed for managing servers. \ It utilizes Material UI for the user interface components. \ +## Screenshots +![Image](/screenshots/screenshot1.png) +![Image](/screenshots/screenshot2.png) + + +## How to run To run the project, you can download/clone the repository and use these commands to run: ```bash npm install diff --git a/database.sql b/database.sql index 4cb4bdb..b6f6453 100644 --- a/database.sql +++ b/database.sql @@ -1,8 +1,10 @@ CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, - email VARCHAR(100) NOT NULL UNIQUE, password_hash VARCHAR(255) NOT NULL, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP + perms VARCHAR(255) NOT NULL ); + +-- Test user with admin permissions +INSERT INTO users (username, password_hash, perms) +VALUES ('admin', 'ecd71870d1963316a97e3ac3408c9835ad8cf0f3c1bc703527c30265534f75ae', 'admin'); diff --git a/package-lock.json b/package-lock.json index d22afc2..0e0faeb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,6 +18,7 @@ "@xterm/xterm": "^5.5.0", "codegen": "^0.1.0", "eslint-plugin-react": "^7.37.1", + "js-sha256": "^0.11.0", "react": "^18.3.1", "react-dom": "^18.3.1", "react-router-dom": "^6.27.0", @@ -11707,6 +11708,12 @@ "jiti": "bin/jiti.js" } }, + "node_modules/js-sha256": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.11.0.tgz", + "integrity": "sha512-6xNlKayMZvds9h1Y1VWc0fQHQ82BxTXizWPEtEeGvmOUYpBRy4gbWroHLpzowe6xiQhHpelCQiE7HEdznyBL9Q==", + "license": "MIT" + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", diff --git a/package.json b/package.json index 0cab2ca..9785172 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "@xterm/xterm": "^5.5.0", "codegen": "^0.1.0", "eslint-plugin-react": "^7.37.1", + "js-sha256": "^0.11.0", "react": "^18.3.1", "react-dom": "^18.3.1", "react-router-dom": "^6.27.0", diff --git a/screenshots/screenshot1.png b/screenshots/screenshot1.png new file mode 100644 index 0000000000000000000000000000000000000000..7b31ffeac2bfab9359ce80480a47e2f5f96b3c5d GIT binary patch literal 42564 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%0A}Zt7 z3;b$bc=OLI(`3`7_q{d7xK>5X9G!J#=jHd#Rt5PC&Q6we)?OS~4o2X(ne71YjexY;OF^XSoKdHlxS5U|Zy{z@AQFDzK8y;JYKI$*~FxZ0YvCMDWu5VvaQ&>yP<#66^6XM~hF7IaDzOCPlsz>mpM*)&&v%co;!?`uEte z`C+DYXUT=$)KNWwpF;QgiCuLUgv7L{g^lYrIjmjf&__+H4B%qvJ`KxpEf?6FKhe@` ztk)rWNQmTKxH#^wn%`yT0%tBa7Yj8LJ1L%<5fr_Q?%pqb1KYi!5d}MZ^9ZgZ%zsi- zmJ-%9p(^Ekx_rv>+T?HdgQij=y-Q|NI>Uw>LoZ}>^-v29FbRlyGh58L2YV~A^cOEfe3g)W-#Q|wtLi>;+0ZP<8H zr+OJprJ!xX<(}Y0jd+fgt{YQPIu-H|G=t;({+IP43I?eFRc~R934^rEz>EYvo{R zvVn(_c1Hq2j~p9AiG9E>?t5CDit6o^RnFh`zL$!f6jw$%Fo-iV%e9d;L^D4D>#RKU zXeB4062<Q(G%|4ewBZ#q!vU4v^nK*>lb zE**U88M?dDdwdH=CSq8|aE^|F^!mn>NPkAB zhdo20dVvc+*3S`lfy?A@>X*ZE%wn5Y7wASP0U#xO1x8<<+IX+D)$D|Q*w4qR=WcpW zY7T}xV2;&X=hwv^t(VEi)Vd%2T_pzv>u;^%6}R{{{g!p&>#jUSrysy{V8>pSwg&XF zD@!;eqB25v^<*b@Xq6Bcj3ShzFzD-jn%;EbT+kWnWZumoCrOniYQ6I#;k%Ae`}ZOw z16Z6&POoL5*g1xITwoflF|9aSve;0zUTuAiOz|C~Vp1MdF$6&efSbqPxul$U?U zO>6yNBHc2dPf`x0q85Z6*YQ^eDhzFGY%YSeUCID8bl>7it+TgBGIx);mYmxNMQ%MkJ$@Jr84!L=fJ&)Bj^pZHTvO0zxcaSbvM6j%XC}_u zb9R&3$y(2)bYaAepG)&}BX8S!aiH{PHZ0uztU1sR$lH@RR-Fi#N7g?M@;?%%bYU3kgrLy?k`1Oe24tG^!0-K2$Wy8n znSK1wo19x{5b3_oF75pn4`Q2h;7LRS8*q1LhQ2+JH*JGJkp!dkb&E}XS1ACV&9h!z zPpGLER?HHwOywm}b~)yr_+rVIud%IwyCCalH~n)T;E^3J9dJpe>Sq(A?nR`{r=gAm zFzmLhKZNLuDad5HdG{T#%YuQeq59 z9>iDXPr!;O@POXZ#LCLbaB!q{s4Hxuj}we>qVOS6b(_R!SdgXUzUS8uSr3^AG(?tx z17KPr-7+9?ePEr(V`&yvh;LwrbA{rCr2D~5K7ey_4yr252LG(1FvuT+x1NhcZloa*(_Ft^2C)bpOFlL6Z)P(8cMEumz zN9v@vPKA2N-lth9Zg94ZM9ioSPt1MTEC@eSC7$=-)mW2Ip?%45(hyU=%Sw4+7{`v+3Z|89qCP!3&xqC)bKDKkC(`)T#5m` zy`_N0FJMLeBc)*C3@Gjfw8X^oR+G2y-knzVy?eL*`0?YA5RWrKSA@jB0;fKbommZg zvBslnZUyiF27ZqD7XzlOP-o$p6>)U+pD$l!D<8uXw@6fzT{})}x%U}(H=xBAc@>7B z*L+to+{lL$BS|u#Yv4rKHcwjjpUB3V0o3in;>O~GRU;!Keu04^X&;CI(WzdcPwiPE zD%&o|VO%)@XoudwN;l#%3dkL>3%MNPItnMCmxb~>17h2RvpQ@xTK2&4Fy7Iz8q5ea zQaAd(YVyz4RoKf z%oKpP9qyY8A6H>I27~GvMzSp}zwcmF!@(-d&PRg>YgA=^m_TF8yq+=~dXX6D=gcUS z#n!$(UJo?3wd_mU1k1U5uLz4M3IVt=C>-aqz|2&+^H|=1yH7V(#K?YVATZr3m{O)clRDqUR_DXG6#PJ^iKk0BzLhKB-u13khqpwMJ3?wq6GNg=)59Hah7 zO5x8!AJQ$v+$2KfHcmJ%8>n`NlsxxQ6qd}NC59`!0D&-u&Rz!F9W|~z?d-(%Kj0zq zi9{r^e(e}=VI(`G1}D9hjftoy6{7>a&Vj=v^x|N7+C)3R*y4rXqkROXFJePpaWgh@ zl~bf-Kmqv$UWt=v?utt}Rk=U$qxqX;JMt#&mB1GQJ*T$YE1iztgGKUQSBbT91AZ5* zOzlh*n|PfDK>UbWZQaA27x`V;QYTC6kV+RR0W=y94HG$B*f!TlK$$Y1dJ$i>l+D&^ zf*>vy^l_X=ufzApjg196wC{c!SqFn9=7;)VM1)905fMBF=-2N)fYL@cw}l>#Ru#>K z;R%v zg1zx$?emZai+r;2-@QnFPAltfJO+FmeA65TXFggl3kT`8d_V4Y-GiMDPMtFvAz zIcaN(ayZ^ZCm@oh_qY>_pLCQg{Qm8tFwC?%x;1_z_2UOKL*M*3RYc)BlP~#}Xx_5iHOFZOt(w{n!B?~3WthMywHzjudNpvH|rIQbOiQfI*M1n|`5UagO zOD4Y*@|^`R%lyCe=YO%*{lnNRwfsrO`yq4^l2rgE*sI5jbe+8wHFJVo1g}3NptT+M zseiQTEjAo&9sMJfsGP?zzzVx|C!N&4jA=4gtu6o;<8dGib3;-mtHZh3^;CGl^h2TA zP|sTl4gRMVaT17*>*1Pd$8~k5%JBfwih7XL9jaMEwHw`A{csgp(m+>looq=}c^$Kz zKQ7QdT=CK#;sa0CGm=RhP|u%qA@JC`5B_dfQnK;k@9m8!pr)jr@Bawn+`B!ywfD53 zuh{M|0+rg`TbRsvlT*C#jrQBpd0INp+|p~4(EF_Zx^;?)YBxJvrz|(Gx;n~e_0um9 z_m0!QZbcUUSG!u3Jjl7beN=rQ1Lr9&`bnqXIDRtGoFcz!T{_?^L-OKuCSz0bAL1#W zu40pdH8b>t*@V);Ga;(>-sZ)uiu2j)ts-3e0}?RPpC8Y zeiJtjb~&tFw=UR8edF`0-TRD>x0}fx&!3ul;B&jk ztJ>Y(h+*f#nW0Kg5fdF%j`A%#QJTrU$K_85bjd~{{-VIt!U*_fTbl217i`uLL_(I? z#D?WwE&TACcm1YgR7Oy~(7MznqPYymJd|z3)DYc6n8s5~RYdUXrB}`LPZb)^pizYl!wCleIc^65ZPgrL~q{kmNq>)t(d)@F_Oi2^JH*lQ_h76daWAi zGq+lbT!5SIUOz!)7x7E=)j4oC<+NoIv#Jb@9ubllgYW;aS5iHAC`Paw=$lo(nfeUU z=X*hRmqOVAopV!OV1jQKhFs8K7CP7$u55EKvE1{RLYOa{>tJxskZY}ltK1r2G92je z0|&Gx_}{?%ERgixWbsXq-JgySFY`bw#-ghfmwNjEcloMB77GQ-(f`6E zcca>BExunEjuBL)ua>DrLVIA)%DJ-!Q|<8%&g7WEI))XJ`22(I|2&ROQ&v{ZrPET- ze%gyp&Mwx*I%+wqPKvg^C33OuC`67J`3lO;I+dS;#0s{rp?bVc^H6}k?6kv7TBme# ztmE@<9OM_WKhl8RDYcn7AP6t8nkjTT6da&bu)TvvxQqYE-Zggu{HL0_y`#>k*Qa?I z>~N7;Q(g!H-0QhbxwJDmIZcpT;F77AD?C;IEvxqzxs4&Cbb9n$as-kGO$4RkJHCvP z7|=1P*t=8d{-fP`vIBckFEWsBQB&9(&07Rb2j;4Te>>_$p0%S+(#kG1H3;%C_4BvX2`viUXU^g{+qJY^ zHI^ro1+CylBW*T@_EQ{&3DdUwp`(gej357WwrrThIzF`Up(w1G_?M>teLT;kMj)Ll zaPBl@vhVL1Z3`D0*q!sV3lj9(VyKigqSdYgaGoQ8F9Gxf>mJo}FLI{{e z1>0oq?6GvKr{E&bDVz-jo)PYLbWC9Nl|Cf+$Osbn;QHOLMwWqSV2E(+Z}bt&hVkFn zBh1Dt1WK`L+-HWza<*R!;mDxHL=RGV%rk)F(As7mwSnwNKyD3P{{M#kED(j-| z>VqO-Aq{0UW(sI`*p2AW7v7XOTa)=S#|A+aLVjQrVM@l=Ajxi4`MjkI@-GCpKEm^3 z84ig0`Z)zSerymgTRxV; z=8Kc&y3Q_0YFm%9`|vy!?yWA0OkdMS8T=adV&}=jHJr)O@A4q&5c=jcH{R{4ymugH zSw&c5N*;psDHOcMb(H2P;1F~yF$rK|xyHvw2$U=koK-^EVel4DE|t0`Ej=AQScPLR zpmX(@t1SLhd&{q7%=VLFyE~PYgYR>p0{BVwGt1?!Jok(Xe z<8K@3D6KGcgD+pxK;IR!#mrSDdp9?6L>xcr>fi#7pAu(mEQq>_S9kMiorVm z=JTS@`Qr7Ds{Og^Ny}~!wZ~dKK`%Wr=vD1Kp;&NemZd03g8UjzWaHf_)q`^0dk1;B zUm(WBQuB2)nOvoeQEygDU%Z-|e79XNQbW#Gt$@T(2bUUI>MQ!oi8<<&uGLyEyA|Z@ z1!Wc6qSSc4(+Pqb$R(zvuXqe{XOKJJv|KIKUv!Jpg=xeEGu+F-8L#mN75_)`p3jT` z-*A(ZpxJx+sIzm%_4oSBV#|8N%X)xJ5B)%1iimQtE2}fsL(RvB z6WhxLv~k)7jangFXO!>q6kuL&Tk822999^5+H+g^W;Ql!i9G}ha$Htpe=FdRLU%m45 z7Km+vZDaNY0bqkYIEMT{g)F3&Wwu%q_xkp7R{OT*AGOxRrgy4i=0=*bk8A`P%{BLJ ztW8uSKo5YwcKd+08%ED;2YkB5N<9+5=V3WUz!idN9D#~o&!4g4S81UIo76~q{J;uy z_K<9+rDi%Il)G*5J9MDKYO*mX*oc{l^N+#_NX#qQ%J7N$PL5#YLb<{ozxaLe0OT5C zz%1B)+9rzCi7YTRBcvHVa9z_sT=2e*p7>5LGt$T3&elh|R7Vut--|ol_F#{#N-7fH zNy#4x3XX&dkUFWTJHO9h$xy3NC9W|7Rsi*dfZ)ohsQL&j+D^)%V7V{+yD3Wr0V5TPhQAJRS8; z4sJN%R5gpnumR%PLYs`w9#UkNU45&$BJj{>=yB$8r1e<4sZQSOu#EG`rW^i`8(jw3 zW0REPa4Vu}juk%F;xYvih!;V6tr?5*)Hhwg9Hsqo|sJbP~%l!o4TRAr#2mLHfJZa`dYM>EI(jW?RAq}6jn zt4t63DteL!jvKd^35&wwhrG+fAinWFH2=blhBb+|IM>4Ak;7tUmcnT#W6w$Sf7D_a zO#TI`(O0b@p#@vc)S_XAc31xY?Ck?(cKPsSusG3cyqX-P0ee$bCtD7)*fF)~aCMf- z%o1eW^+sX)_@6`sdVxDOG7^L3Zi4yQ(diVK#d6sBOIoCxM(QWaZw!9RrxSPAuK>y& zL0JLwyUH_Nduk@Bc7QY-*#A6lWHW4E?o)!P_!FIom&_vJpmqVR19`=;=+wDYS961^ z3qT!BkQVICKEQAniiNk@fl3eWz6U|zL=?~TsJ`owHzu>Mfav~T34?GjQ9A$kP2RD9 zU+)8q@VTW%(+h1UJ*Q1c80n>&{PPFx8 zwUuOQ3-hQSqu!VY$xDUl6dC1qQloyWu9a7UNH zY)cu;Wl91l`cH&>PO26kYiw|J+4>|5Gf>VqXYSki?>I9S4iB}`ltge6Q|!o(#^T*Aa9?{EnTmymD? z373#?2?>{wa0v;QkZ=hJmymD?373#?2?>{wa0v;QkZ=hJmyi(jzy~$9bIm2FE54O` zaQTQtP;a>mD)oi7-9LbL(-yaHhrg`G`r^hv;GzA;mkcdzIaHMjZRhuaLc+yu^=s7M dJOATiYggg_u&&+qrUg23{ - res.send({ - token: 'snippetsx' - }) -}) - -app.listen(8080, () => console.log('API Running on localhost:8080')) \ No newline at end of file diff --git a/src/Dashboard/DashboardMain.js b/src/Dashboard/DashboardMain.js index d504d29..ce670e1 100644 --- a/src/Dashboard/DashboardMain.js +++ b/src/Dashboard/DashboardMain.js @@ -30,20 +30,9 @@ import {SystemMon, WebsiteAvailability} from '../widgets/WidgetsStatistics' const drawerWidth = 240; export default function DashboardMain() { - const [open, setOpen] = useState(false); const [anchorEl, setAnchorEl] = useState(null); const openMenu = Boolean(anchorEl); - const handleDrawer = () => { - if(open === false){ - setOpen(true); - } - else{ - setOpen(false); - } - }; - - const handleMenuClick = (event) => { setAnchorEl(event.currentTarget); }; @@ -144,6 +133,7 @@ export default function DashboardMain() { sx={{ flexGrow: 1, bgcolor: 'background.default', p: 3 }} > + {/* Hi {localStorage.getItem('token')} */} diff --git a/src/Login/LoginPage.css b/src/Login/LoginPage.css index e69de29..3c83161 100644 --- a/src/Login/LoginPage.css +++ b/src/Login/LoginPage.css @@ -0,0 +1,9 @@ +@keyframes shake { + 0% { transform: translateX(0); } + 10%, 30%, 50%, 70%, 90% { transform: translateX(-10px); } + 20%, 40%, 60%, 80% { transform: translateX(10px); } + 100% { transform: translateX(0); } + } + .shake-animation { + animation: shake 0.82s cubic-bezier(.36,.07,.19,.97) both; + } \ No newline at end of file diff --git a/src/Login/LoginPage.js b/src/Login/LoginPage.js index 9ec6063..9720d10 100644 --- a/src/Login/LoginPage.js +++ b/src/Login/LoginPage.js @@ -4,18 +4,27 @@ import { Button, Container, TextField, Typography, AppBar, Toolbar, Box } from ' import { ThemeProvider } from '@mui/material/styles'; import theme from '../theme'; import {loginUser} from './LoginServerSend' +import './LoginPage.css' +import { sha256 } from 'js-sha256'; export default function Login({ setToken }) { const [username, setUserName] = useState(''); const [password, setPassword] = useState(''); + const [msg, setMsg] = useState(''); const handleSubmit = async e => { e.preventDefault(); - const token = await loginUser({ - username, - password - }); - setToken(token); + try { + + const token = await loginUser({ + username, + password + }); + setToken(token); + } catch (error) { + // Add shake animation and red color to form if error + setMsg(true); + } } return( @@ -63,8 +72,11 @@ export default function Login({ setToken }) { label="Password" type="password" id="password" + error={!!msg} + helperText={msg ? "Incorrect password" : ""} + className={msg ? 'shake-animation' : ''} autoComplete="current-password" - onChange={e => setPassword(e.target.value)} + onChange={e => setPassword(sha256(e.target.value))} />