From 5bdc0dcba7e27e58d1361fba9095545a9b239fad Mon Sep 17 00:00:00 2001 From: Giacomo Bertolazzi <20015159@studenti.uniupo.it> Date: Fri, 14 Dec 2018 18:02:30 +0100 Subject: [PATCH 1/8] Changing for make everything work again --- .../Controllers/AccountController.cs | 8 +++++--- SeniorAssistant/Controllers/HomeController.cs | 2 ++ SeniorAssistant/Models/Heartbeat.cs | 6 +++++- SeniorAssistant/Models/Sleep.cs | 1 - SeniorAssistant/Models/Step.cs | 1 - SeniorAssistant/Models/User.cs | 5 +++-- SeniorAssistant/Startup.cs | 14 +++++--------- SeniorAssistant/senior.db | Bin 36864 -> 86016 bytes 8 files changed, 20 insertions(+), 17 deletions(-) diff --git a/SeniorAssistant/Controllers/AccountController.cs b/SeniorAssistant/Controllers/AccountController.cs index 9edde56..34366d7 100644 --- a/SeniorAssistant/Controllers/AccountController.cs +++ b/SeniorAssistant/Controllers/AccountController.cs @@ -45,9 +45,11 @@ namespace IdentityDemo.Controllers [HttpPost] public ActionResult _login(string username, string password) { - JsonResponse response = new JsonResponse(); - response.Success = false; - response.Message = "Username or password is invalid."; + JsonResponse response = new JsonResponse + { + Success = false, + Message = "Username or password is invalid." + }; var strunz = Db.GetTable().Where(user => user.Username.Equals(username) && user.Password.Equals(password)).ToListAsync().Result; diff --git a/SeniorAssistant/Controllers/HomeController.cs b/SeniorAssistant/Controllers/HomeController.cs index 4ee48c6..10faf56 100644 --- a/SeniorAssistant/Controllers/HomeController.cs +++ b/SeniorAssistant/Controllers/HomeController.cs @@ -47,6 +47,8 @@ namespace SeniorAssistant.Controllers [Route("User/{User}")] public IActionResult SingleUser(string user) { + if(session.GetString("username") == null) + return RedirectToAction("Index"); return View("data", user); } } diff --git a/SeniorAssistant/Models/Heartbeat.cs b/SeniorAssistant/Models/Heartbeat.cs index baf0622..7bcfd6d 100644 --- a/SeniorAssistant/Models/Heartbeat.cs +++ b/SeniorAssistant/Models/Heartbeat.cs @@ -7,7 +7,6 @@ namespace SeniorAssistant.Models { [PrimaryKey] [NotNull] - [Association(ThisKey = nameof(Username), OtherKey = nameof(User.Username), CanBeNull = false)] public string Username { get; set; } [PrimaryKey] @@ -15,5 +14,10 @@ namespace SeniorAssistant.Models public DateTime Time { get; set; } public double Value { get; set; } + + /* + [Association(ThisKey = nameof(Username), OtherKey = nameof(User.Username), CanBeNull = false)] + public User UserObj { get; set; } + */ } } diff --git a/SeniorAssistant/Models/Sleep.cs b/SeniorAssistant/Models/Sleep.cs index 12ba7f9..b542d99 100644 --- a/SeniorAssistant/Models/Sleep.cs +++ b/SeniorAssistant/Models/Sleep.cs @@ -7,7 +7,6 @@ namespace SeniorAssistant.Models { [PrimaryKey] [NotNull] - [Association(ThisKey = nameof(Username), OtherKey = nameof(User.Username), CanBeNull = false)] public string Username { get; set; } [PrimaryKey] diff --git a/SeniorAssistant/Models/Step.cs b/SeniorAssistant/Models/Step.cs index 04eeab6..3385092 100644 --- a/SeniorAssistant/Models/Step.cs +++ b/SeniorAssistant/Models/Step.cs @@ -7,7 +7,6 @@ namespace SeniorAssistant.Models { [PrimaryKey] [NotNull] - [Association(ThisKey = nameof(Username), OtherKey = nameof(User.Username), CanBeNull = false)] public string Username { get; set; } [PrimaryKey] diff --git a/SeniorAssistant/Models/User.cs b/SeniorAssistant/Models/User.cs index dd9e25c..4f12d0b 100644 --- a/SeniorAssistant/Models/User.cs +++ b/SeniorAssistant/Models/User.cs @@ -1,18 +1,19 @@ using LinqToDB.Mapping; using Microsoft.AspNetCore.Identity; +using Newtonsoft.Json; namespace SeniorAssistant.Models { public class User : IHasUsername { - [PrimaryKey] - [NotNull] + [Column(IsPrimaryKey = true, CanBeNull = false)] public string Username { get; set; } [NotNull] public string Email { get; set; } [NotNull] + [JsonIgnore] public string Password { get; set; } [NotNull] diff --git a/SeniorAssistant/Startup.cs b/SeniorAssistant/Startup.cs index 3d652ee..b2e605a 100644 --- a/SeniorAssistant/Startup.cs +++ b/SeniorAssistant/Startup.cs @@ -121,7 +121,7 @@ namespace SeniorAssistant using (var db = dataContext.Create()) { const string baseUsername = "vecchio"; - string[] users = { "Mario", "Giovanni", "Aldo", "Giacomo", "Marcello", "Filippo" }; + string[] names = { "Mario", "Giovanni", "Aldo", "Giacomo", "Marcello", "Filippo" }; db.CreateTableIfNotExists(); db.CreateTableIfNotExists(); @@ -130,7 +130,7 @@ namespace SeniorAssistant { db.CreateTable(); int count = 0; - foreach (string user in users) + foreach (string user in names) { var username = baseUsername + count; db.InsertOrReplace(new User { Name = user, Username = username, Password = username, Email = username + "@email.st" } ); @@ -145,7 +145,7 @@ namespace SeniorAssistant now = now.AddHours(DateTime.Now.Hour).AddMinutes(30); try { - double totalHours = 50; + double totalHours = 48; try { DateTime maxTimeInDB = db.GetTable().MaxAsync(x => x.Time).Result; TimeSpan span = now.Subtract(maxTimeInDB); @@ -155,21 +155,17 @@ namespace SeniorAssistant for (int i = 0; iLI~*%Qa8ya*<_PVHXA_tEJaW{f`AB! zfZ!t-I)Wh5MUW~23L;HFR6sxw)aRVp``&YZd3IQzKi=!r_no~iki^fPGoO3PnbYo> zJ9~OVOTAjt)V#5-MGf?J@Oc5)%?RhDf1upAO7+AKcfHFl+l0B?d9qx zUanZ@Ren`{u>6b44@y5TUtO##T^ap*@&6M?AdWyBfj9zj1mXz95r`uYN8mp+0)q!!!1T3RmjDi`wMe{ZVWSie-w zSWwqIVO?EwuK|Mx_f|7z&QmkyPoLh`LX$SuH8d_&=I2YGS#?{t9@*5q`b$fi*tDvp zso54azM;hyNIy{BjPQ8u|AW4qu8yE?hL!U5n#@u;x#vMFko?1NXkmaGd znl0s)vUXrQTO94r>lWkomF@*kYE~+J9$*#mQ{9Zr%Koy0(R&vEIbM{wwu` zAlSeAcZouHEdNRvdZ#koMs0|THmtGp~c>a~Z)Fv|BChZ*+nD(-k*S7y>(mYLb_KBJ{|0Jp( z+5gVoQ^>Q0sSDyE-a`C4UNWpZWTN}~Kq`JVEn<)h1s%0tRsN*|P-EZtB# zqqM#>wbZkeD!y90w|H6c*y7>EVZ~hv9~Pc2Y%iQuXe>-C^eSZXujlW}Uy(mPza&3A zziaN}+_Slxa_8hW<)-KQ(=GctWMh4fqL zhtgN2ThlAjqtkn){+4<^bzABispizIRR2^d`A+hYOc3Bg#6-175a2?@B(+cw;6lV2wLlQy zLd0k_Ul8Cz#B4QB5a2SX?YvAK302d;bsL_G|7b3>0QGx&$BDSiLf&iCcZ7!452tj}g5v$a2L4XSp zE7d`Q02d-=t6_ow7b5D^P(gqT5%bj$L4eCaZ7!SDU_pQj5sTCyL4XSp>(xL(fC~|0 z)Br(%3lR%dtsuaKh+(Qm5YnZV+Wl?nKtV_sCWfm1f{-qb=qCv2!o*tDR}j*LiN)#w zK}Z)SMyo!802gXar>Ne702d-Qs9u5q7b1qL{RIIoL@ZN11pzKZ9HI6T1h^1Uul5xL zxKL}lQuPo7xDYWz?IQ?qA)--fL4Zqp8A=e~Lc}t)w;;fUh@omPL4XUjrfXGqL4XSp zv(%n~02d-!)E<4prR*0WL%=R=WrST! zx(WhZh*+z-2m)M)7_N2}1h}-9v6CRcrM)%XQ4rul#2~eUAi#x)WvVI&a3Nxwst5vH zh&Wu81pzKZOjad9fD5&z4XP*za3Ny0DhL8xh#0Q&f&dpH#;cqlz=eo0Dk}(ZA)-!Y z1OYD8nr>5RL4XSpQ&mb3;6g;RN(us8h?t=gf&dpH#wuSB&c$?t%fWK<@6wip`FEmv ztL+$fslHgfH8nY1NsD7!4TZ|I6AP2wldq+&OE+Z(XFkjRH22l~p@p3bFBC5?)t3(_ zzhAk%dYr#GF(mPM^1jq*=^2?WnHRHHFx3lE8D6gtZ3v<$IntT8bD9V774g;I$)~= z+?C)x#93la*AYhsVz=D8-B>)!GN}Cq8qoG~%d>~+o1i*rT$r1ny z0wzfSEC`q=0k9xof&{>VTJZ4_fOA2>I0=A7`#XS$16U9+MwS2;1dNsdSP(Eu0$@Qs z@{tk%3j#(+04xX?E&;G0;2;Tr1p&h(02Txcl>k^!UwnuJz=D9m5&#PV21x)c2pA{< zupnT71i*rTS_w!C?uFM#Kw2)x#6eIu^1mq)!GEM_DC76hav02TzKBp@tI2NuqP zE8O(*=(au5KovWDn4sxx_xl4?EkWLmWrLL}6TRxMtG89ptu|JtRQIX;z4CnJ=E_-> z2J?T!KXC-&2*eSHBM?U*jzAoNI0A75;t0eMh$9e3fFjVt&h4kDo9TMO1JnQ-2=hmK zU3%E*eTH0zRX|gZysw9y;b+M8hy`?Y`RN{ZlAj^hs}<1Xrqw;{JU>IOe=ne0@7cYF zo$6=E_3;HX;pRhn*x7!DoSo@uvt7^Tr+U~4e}tQGV8FF?4`r}!B3+5b_D%(6ew{Pd|?X0|=bGI|< zoz9oXcR(D0I0A75;t0eMh$9e3AdWyBfj9zj1mXz95%{tQ$Z2iYqjufyi1~j9M9lv? zAY%UC0TJ{64v3ilcRO$eV*cL&5%d2JNXkfdG!Brkn}6~&G}F--fY|@P zQ@H-{PIzW$fzDb#jzKCh905Yoya@B7;B&SwOINQi%qZWM^Sq}^(C?;gEDAa00A zAh+oC0&xRG0=cKt9r`Vu?$B@4YehBA$5rE>rq>7re0b37MO`lt@FB$eSg#fc_;4w= z=~V)8!(HZB7&%?96o@-R4lxzg2?UJzSWea}1Oi617RJ9r+nxG+p23Kh%Uq@HR((dm zh>`2G-K)&j=VX(qG&C{EUDRBeS&K(9Z}M5#s$s+a3LkfDtWw_s`aLOFtuEM2Po{ zwtM;+0V6KuIc+!fGXh3j%2}Q6>OWT7UHx1L2ys0pYrCzV5h=tg;QjNp-Pg~E6lzBn zXuGkW5h=uocdxcP`x%i!?Z`{IuR!D}V#FWS>E8Y|x{oLXgt#3)N!!i+d?+Bqjr9B4 z?(Sy&j_3%uIM3cH~TXJM%+gKxYOPKo3-8T&xL>x zx8g5pyWO7=5Mt!3o$mMFs_lM%E(CnIklVD~@XrYNaPwQE?T&v&;0!TxqPAQ9837?i zs@m@PX9R>8xn0{$|BS#HV&o}pcl|R0MvOeB?a}~7z=&JuE!r*&U<8a9`JuMU0vG`! zM$XW7Q2--g#K>LRE(u@+j2PLi)4l)A+O7uRLO_Tc@w+?S{J%}xg#cU#_;4X}wOt0l z2>39vuG8)R$7s6(fC~{P$c)VtgTu|g3!B9L|E}@=e-kdw2IwvjGu%Q?*?9kdTmGa* zIqW2FSx!c{K?3puXJEYqbu%86v-Obx?_mu!x&mlC% z-xh~>|9@K?BIf_im>RXb5%d2Jh?xI(K*apN0jTZH$eS1LZUWL0fV-Q3i246PrsocM z99-e9uWI-I@6hqc;urV-XDTmw)u*bLSGQEhnz{d%%x}g&aRlNB#1V)i5Jw=6KpcTM z0&xW52*eSHBM?X6KPLhQX0qK6?4H}h@uI{bz1 z{0oEV{~z?lUl?>~UGu8?#>S=tQ&`17`i+5K{EdNA8tPUxZEWhB41b|3S22KoVZaxE zVZgY?)lD@CJfK>lYrja>PHAX5qHfcshJJqd8{N448v2czFaAc2QD|tg`~Nf5o4x9X z)!&=>|HrHMnm@!paRlNB#1V)i5Jw=6KpcTM0&xW52*eSHBM?U*j==xz2$YiDd6D|y zjQGQ#wD`lol=#Ddr1(Q^qL}R7o)W<3|KDV`$X8#g-c`M*x~&@T|L<2jpkJ+7NWt5T z;{E>vYHEjtQE_|j{doU>lU%Y>Lkse}c>jNsTr63`cTv3mzez3ut#MoA;{E^f`9kaS z{CNLA+(xt_(2Mu~<88z{>f`o1TZ`uwHx{QAdlnOg zmkW0mE-W+`W)%7qGWl2YKgoZ~WdEC+KQLd+{XTbp?(*C*xrMobxoY;^>?7H$vL|Mj zWQS$DWZug>mbo@_a%M$lWMRFTf?~K&C)WnoZex7_j zc}wz~`?q zWZE?FV&-=`ko_j`;^QgnKqgKDFU~%7m=0v-H1J|(R~^XIY2d{vs*IP+od#aa+@J!R zJdFqMz>ApUbs&?cffgUmemaoZ(?E+~ho9GhOrHi?%q-M_%%28Y%zR%56GRRX&?3hB zsSaccHPGU6cGAH(Q4V-9bDR#w3PyVI`>cP94rCTJ>BWq9iVkENHR;8SNf#E#JZjRb zow-Q|GLf3}YG-!Vfy|^Py_oUd)`3i=240i~!n;ZbGM5^7F>{FyWHL4IV&+2~$ZTrh z#mpx694Xpw2vz>DiTTn93*8hG)W^5Z&?iPgZ1N4(7Wl9|=OOO$hfa0f3g z=S3aJ%nLe@+10>{nb%Zc)2s302fXN2w?zjsy&7oo+i*`E$oy)c#Y|oYGQk>X zF*98UGQ%2Z5##+y2QtMPXfg9o9mpJOpvAAMrZtsYA;F6o(<cctPW(ZHP9l&Gg>m) z8fYr zHSpqc%%v)`u7MXb2_49^Yv9Fo{a6Jy?;4*9@S>LcXdTGBYoNuAyLmv##A~3%%nx-S zGp~UbGwjj}r(;F)~>nD-dvEWN&?pKtPF+ zE&6DIfDt3J^j8D|Mud28>Z1e#M%-ZUppO&?7;(G*oIXMzV8qBPdYeGNh$~v7TLc0| zj11LV1p-ElJfoWh0!I8=uu*Rj2pDl|{<_{Q5HMooS=}TMFk<8!+yCF<{llxiT>WwN zlIl^_1=T^-oht8Deo^^B==e?|WI{F40e{I0o= zbI;~(%AJ$jl$)OGlgnk_%s!C4(u@Ku%Z|+Mp7|v6T;`U{d6~_b8JWJBLi(-rL+Pu` zHvm?oN1Jhgzoni}-In@BsyQ_))!!^|cqjQt@|xty$(6~m$-NSvCtgh4k+?9?l9-dI zNmTrI{YU+4{Zswb{&-&*#SVUy4KqKoI|}nCWuweQM^Rp&Y>=7gD9Dr4CPBbeL#JVc z+9(LPXoyU^958J7=lhT0$q=i-R5YP}$wizAkG`gMVgoqk~v zz=dx55vpDg;6lV$wOSD1LPWD#B?xz3%yAGgPOTJ#J1>sds_Fy*E>y-4wL%c!Lbv+{ zwOkP3Ld0gZOc3Bg#5}cB5a2?@D78co;6lVWwOA0~LPVXiqhx#~g9}}S^OPMUV**@= zn5gUs857__#3W_M$Cv;YBGxE7I>rRJ5HVWWu`wpVg^1b8j*Kw@F4S+Br0lpD6W~I` z5@kolm;e_dma5r;02d;*sab*m7b2#rnSuZpA~q{K8pg)~F4R{TuIyMC6W~I`Ol3#H zm;e_d1}i%b#ss(!u|?TYFebo-hz4cHz?c9RB9JJ7`hxDc^Q*B7WNWrwr)NTrJ->|hoX(uIk& z$_`~QABz-VQMvA7Iyq1JSYvV&MmfC~{DlpMkW7b1o#JA%b!fC~}JlpVif z0$hkVLfO$PCggeH6$JIlj$JVUF4UT?RCeTw32-4|hO*;UOn?g!jmnN%F##^^W!Nz* zCcuS=Wu1N)V5qX=Ra^$RP;0tY+0iN{z=eoe%8per0WL(eC^=FEE<`jcJ5a@CfC~|I z$_`U80q2E?CCUy`F##^rnhx#sivWw29iZYez=g^fqwMe$6W~I`+D^X*FkIQ8DJ}zC z+RLy5Q%rzMduzI*AmF?ZF-Ywo2yh`{nW_o`T!`4F?1&T}2b>oo4p(+OiV1KbVzRQM zQA~gfwYLq*jzuv6E=0^$b|i`ka3Ny2vg1%pfC~}hl^um*0$hj~)9E(=>XaRU;xfR6 zTGMTvegeQ`Cl+OZ3zgBV?AR060xm?%==1{sW0f6u;xgd8P#GiJ*8iuzy#Mc)UoPKO zzNoydJg0nMxm0?)^ib)$r4vg_OT$auiXRrAD&A21dU0KGQgNTcKMTJp{K%{T*jkuX z=vOG@f1iIK{~go&Uz{J7@0$A{_eAaoxzlrNauaeY`}gdN+1s<<$ZpBb$R3c*W!}i# zm$^K1Z04}ckj&2M_tKB2zn}i9SpzUGy;tfp)AzqMbzZ6|H9gfkl}Wyqyf^vnWzn|)$;}3tO0@+1#VKP(gbSutR zf$XEXb8Zm2!l$c1cGBDh>=09m?4`N0?vTkUkli$Q+8r`Xg{v9(th#I1A*)rmn1K;6 zqQf1f!nF*HfDzpZn^m}!fe|nwWSk0DGB5&0gqUNIoi#8bWP%FUF>onhL`b~~moYE` zMucopf$Xn=5nb&IRJe$NO93N7mZ@+J10!HW$WRq7VPFJ|2r=hK_SwLQ5Mv}eZD2&m z5EZUp;EKSA-gU>QaQOlwU_{6w6|P=j1dIqdQiY2b7y%x5 z-N1<6cn?zH$^|Y3j0l;n!i5WrfDs|)+MOUCePBe$QWY*+;8Nfm5i&=Gs}>jmBSN;R zaM1!I(um)TjgjoaNh3xYRk&np0V6`pO(J`9 zU_@`pO)6Zcz@>l@AtP0|Oo0(FB4m>aS1B+8MufDeaFGHdU_{6g6|PZW1dIqVaglvG zFrqhMbKA>K9T*WZON9#*xFRqjGZ6z=%pQ*RJf?fe|4yJ71h& z&XMfeff2RS=2&Fk4vYxdpu(jIe7JCq2r;+4?A?J8A?ArGyLVtjhIy~qEbxrDLZ;_jtH5e!sQ5jEMP>)VJcjWzz7%-VlGVC*8?Nhl*`T@oFhUGSK(3w zt_X|>G0!^L-2)>+%(W}~dtgLJvkKQCa7AE5h-r^xj}MHf5jL-(vdafXgqS-(_W8hw z5OW%3rw@z>F)fMg^?{KqMRxnZh!AtD$$lRgQ6p?ZCp&&%M95kdu0P<=fe|4MDqMcR z2pAD!ZW7t|10zDr1Kut^;8MVd5Oc%I-k&t$iTp__TzbHzNFzqfJ)IC0Nh3zg;mQu6 zG-AXw6P_qV8Zk0QogfG)#Kbyvydc1bn&6GS#fL z3lR&{R|EkrM9fu32?AWG@m;U%a)S;}O?wM|gdo6$h-S4-5a2?@8fDiSa4q0M#3r>> z5a2?@9MvocaG_>*Vj;Pk*X(`jB^#4Zr-r32OQ+K7(@&cI_oeat8_`}E2TxHp`~4l9~GZ1-dsFCIW4(8wM**Q z)T`;K=^HX#GDrJ+_<{d>vugk5;+EpfV!vXs@OI(h!qtV73U!4sh3@&!@-O7?$bU0` zM1FpLP=04KcJNegd+uzra^TQh-&`^KPWETnYqMX?uE|cy?wjnDJS+KO>hRRP>7MB` z(jR0Nd7t{r{Ra~VB+gCzHJix1lDWsIx*yx{cC?PKeZ%taB_ZSAPP{1z8UJ?T4N1te z%mWMF?<4`W&})SEiX@;GCVndksD&DC@7I!mT9|lI5>N{hFGvDvp~lqvr6iyhCZ3f9 z)WXCwl7L#Mf%Be_1k}RBFC+oAF!8t~pcZO$yq}pXrOJ1oAv*qr0jidM!S5~!cUXeh zQxfj51hI!C++i7lS`NRPB%l^1c98_s!bDd|$XfVu?(ZlGSxY+sUlx(Iv=dcX2Gl|i zTE8d>sD+7wB%l^1@{)jB=n-f>buMmnsD+7?B%l^1l9GU0=rQX3QxZ@M6aSC|)WXEy zCE;o@!+N|R@l#2-S_JWlBwQ_m_^TwK7K*9&7fC=ZOne{-sD+95B>}ZiOuau!0%~F6 zT}ePKO#DF-vKF4E^KOqMIHq?;5jAwbc=yW=m^)JUp`Sz~Kuy=Pp>|s& z!7=@D6v4NMcV8sIF@3}i=CtSM5~)%6yJGU%aF4}^50e2v0WC+CK=Ir;5}p)m%x_AXH7OLW}Io)Ss$jq&wJ zf*&^LMiTt6`DP@+51VgC68y0FZY04Eo9iM8e%SmllHiBUt&s#jZ0?F8_zp2UbH%%_ zj5;^S-ou65sa}J>XU<>YKa}X3I4|)@a#`|$RG-wjslTR|rti=6&YYe3D7!d&Z*F3) zNBNL)pK`wRR_Wo=HKkKZt4kBAzs=uW@C%a)rxzYC?pT~(ytw#MN&BPys}hC8=EQT! zk;yAlxzwiAv+3dKD>9i(W9DhI-~X~)B3EC%r~2*cvDL-Z;nm$LpHzNTxvg?RrKK{r zGN7_!`MvTJX&y=(gT^y`^vneEwKvd3nBm;Yh@to+9O^!x$&LhkL{Bf0MxRq>OX=o>bS-p& ztdeCwEqq5^APK02iEl*LLg!_vECXucJL+snKrKw11z+xkh|zgjD9eCa_>MYV5>N{h zr$yI77szZ`hODLijyg#avX*wDRlazE3SA$ENB}CK^LCsBpbi3#l>k&hr)^9mKv&Ns z2|yKeR*&#Jzbg;6y0+Mju)uWz098?vRRBP7fDdB>Kxbpu$P(zH*eensi+v*jiX?or z9*%)t>1v<^dGg(v6T`)OOTxuf5PL}i%Am{C-%S!w1{1qVLYBc7p}(^vWEt(mPLhB! zC^UXq5>N&cB}qUT6n{S}2`Gb!j3l58I?28-2`GaJPZF*SF~s_rBwQJS_?sl446^k; zk_42&#D|iAGRW5Zvm~GlCjKM|D1&TG@*2^FfHIhPOJ20{`Ox8~)&Zb|f-J4w_ z0Xm31A^|ehkpP8r|44xD&3;h;_qGN`0@UyvBmoyn_mqQo9{}hn2Vb=ZfFij=WEB+2 zT_ORBMRHjrK#^P>2~Z^0cMQ0Zoy`(}TaN;jjOYK?H8i=%m}fLU*W&sA@G}TJ)akt- zTLOp}-Ba=WfBS+GH{l{)#^U*Zb3qMgpP`E9|Lu21Og#93^Y_Rbj2`#ir;>2jn0T>_ z=l{cpRy_aT{=t@7dfSNS|J$;9#qSJpa#2klgH+nVgU3|HBrT$C2at|F#zA|B?BBoBwZeroa9E-;b&n zRJT+Qt@f^FDz8@Vsa#SyqB5t_zfvf_S-!7)naTdYuso=|L+RbpBc-dt?0*N9x)$Fr zK3=@8cuKLZII6f?;iJM+h3m~;fcnBXvxEQB{B!x6%qsl#`N{cxa{tJ^n7b`^p4q=Y zE!Q)b$iAGtGkamS+2sD~lg(sa&D@i@By&V&jyah4CyqcIfj9zj1pdt;pu_$q@9}U; zm_?VPzizb~SebDzm4bO%x7w7`%yiUs@h;V^HXj)??v>1yXt`15qD zO+3wv+XW|>vTn60$(R8zUeEs*-D-1^F#}%AT%%iU`e|msi<#f*)^36UFJ5wehHkZK z$+#Tw;&MLItu`+iGvFo4=^_~E#Ulv*!@AXGCgXCX7c<_=y49v8V@7&0<0o{hO-9X( z^kT+)QMcOUWXwn}X8bO?)n+GSMtZd~Z|GK=o{Smr;^on%E}Nf>8So;;e@wU91ZB*C z7nk#dZnYW8m;o;?N9$IbqKp~vV&;#!)#fN;2E3S=t6Swq(!h(muq$h zYL#iqz>Ap8y49vBx3Vu7 z&|+r0ZuJBMTEzHI=)h(xCW<-xszS%a{Q#W}0cD0%W5#(2=8rnC z`OBCAFTPaGcL8k%GiJbx81EAm$Q)+iMa)JW*d%6L3}|sNKi7dxW5x_`Y!M7- z5o5M?1e*l|T6C%Un{?157|>#7gbFqph6f8kiV$QifdY;gAIZK zD`tv1ST7i`;tRD-2MvM&E50dS(ZM>wfEAZxz6QNkFrdYZ`5N>Z!GIUn^^y+i1p{8p zyrF~Df&nj{U42gns{{jH%v`F2m4X2;VtkW7vd%DkM!}1idL66~#ef!9^|}rd$@7H@ zT3pp3I?N=`3~2GB&&@haCC?0K5#!&k!(8&rfEF_YJ5MIR&i4PuWxLz{|DDxuR$HpG ztNp9R%3GBOD_2%ds4S@*RN1Bcm-3V4>&ss&uPsk3>(W0;zb@TTx}eltnpx^w$`{`( z-e0_;c%1qA-_T;0!uy3^n4S8knGt~Tg}w8in;d?(<cc_|3sJ z)ec#u!odzkTubecaVi|^V8p$DIAov-hdLN>?;j4?s=|>DM%?R%LpG^!po0-GqCtZe z6^?T-0!D-kQsFQMBVa_xJQa>|Fakz|)T?ligAp(yWULCuI2ZvVLbj+@JH)|=G~(fc zH7Xq8U_=@*aqI2e&ejI31Q_y!}=h>=Aq9Nu6=8Zk0Pg`*pcNFzp;s&H_F5ip{z z%v2SQZ7>2xgv?jr&;}!5M96p*j%+XjMuf~%;lKtXU_^+yq-5@OFd}5S3Wqhg6fmN0 z%p4VtYA^yugqVw=vq24W8fETvFrrd6s&Gt$D*_`zjFBDEU<8Z^8K%M!4MxC-Ixy>0 zIH17@7!fj3h2t5Fz&RphunLDW7y%B?`gJfO#AMl*`PZG18y7HN zACL*yosmP#7e!Fro`{ ztO^G)ICNk{i1{E_XJZ)VaAhKPFrre-M*(Ceb}%Bu7}*gFJ{B+{#C)y74qz|>Ms#7C zjQ@80f)Owx#C$oUv*8PKy>vEwVZLEthcCDyFrtbEsBrXx5ilZTh6)ES7y%=?FwJSS zV;78o5g`jzICQ}XTy=yTs=|>AM&KL~Vm`)V2QC-^BSOpvQ0%w`BVa^``8JguwqOK| zXbfPK3P&v%0V6`pS3K;X1tVZYh`BI38?!KRv11lo3K&r-s|)5$YeIIsSN-k3l8rAr zKD*lV*RRb!nteA{$<^fMv|4II`{Biju`4RcubD!p(&)uH8@ZaOLFFuMm z0&xW52*eSHBhYySRlU2 z@J)O}B*71YTOtX5nA{mja7vteqX@o5yoVwQj_G5O1jqF0NP=Vfd?dj!eL0fgn7%GA zG1o10k3C2z3;-QQF|q_YiX9^XI*4wO0G-$FkpP|69+3c@)!vZ+ozw%P06wRKBLO<4 zBO(DhqvIk0isY0?fFgNlBtVgz8wpS(4~qmSlFK6jie!BxK#|jX~_y6hj?SJ__fVls^3a=@X7K9=h p_x}}t9ng#W|7|%AXmB;||J(dIwQ>JH%woWa$m0HgTNZ;Y{|!#fo@oF8 delta 973 zcmc(dPiPZC6vk(Fv$LBfyRWd>%*JHXL=TZB&7X~lwSqzu6hWbgcxyG#qOICk%|Qxn zV)USwnmUI{>7hl8=t&G71h2Li5h@71ilT^Kym@qXn>K9`JbIdM-uE8wH{Wh;S*$Jd zjeQsy2qE`;wPOo?t zXw3V>ZHP{#uF;R)gWc!GuZ;~yBE?c=%$62CuIhMj{L-n(3N5Mo>5QV$B_-<)2@)ZM zs}s7R#Q!msr;pW~JHbh$r-!S@=qL5?Unj&9SIeaey~x%qK!Co1qEBIu!!Uv18@z{C zumpEtq7|*3hcLlHmb22C{=SUWmpK&4mt$CgEM~sI~?cR -- 2.49.1 From 663b695da491a569f0d98993088ad0330e846b87 Mon Sep 17 00:00:00 2001 From: Giacomo Bertolazzi <20015159@studenti.uniupo.it> Date: Tue, 18 Dec 2018 18:03:05 +0100 Subject: [PATCH 2/8] Fixed login & auth --- .../Controllers/AccountController.cs | 72 +++---- SeniorAssistant/Controllers/HomeController.cs | 33 ++-- .../Controllers/Services/BaseController.cs | 10 +- SeniorAssistant/Models/Register.cs | 15 -- SeniorAssistant/Models/User.cs | 3 +- SeniorAssistant/Startup.cs | 54 ++++-- SeniorAssistant/Views/Home/Data.cshtml | 180 ++++++++++-------- SeniorAssistant/Views/Home/Index.cshtml | 12 +- SeniorAssistant/Views/Shared/Login.cshtml | 14 +- SeniorAssistant/Views/Shared/Profile.cshtml | 3 +- SeniorAssistant/Views/Shared/Register.cshtml | 32 ++-- .../Views/Shared/SidebarMenu.cshtml | 15 +- SeniorAssistant/Views/Shared/_Layout.cshtml | 2 +- SeniorAssistant/senior.db | Bin 86016 -> 118784 bytes 14 files changed, 235 insertions(+), 210 deletions(-) delete mode 100644 SeniorAssistant/Models/Register.cs diff --git a/SeniorAssistant/Controllers/AccountController.cs b/SeniorAssistant/Controllers/AccountController.cs index 34366d7..f7ebed2 100644 --- a/SeniorAssistant/Controllers/AccountController.cs +++ b/SeniorAssistant/Controllers/AccountController.cs @@ -4,44 +4,14 @@ using SeniorAssistant.Models; using SeniorAssistant.Controllers; using LinqToDB; using System.Linq; +using System.Collections.Generic; namespace IdentityDemo.Controllers { - [ApiExplorerSettings(IgnoreApi = true)] [Route("[controller]/[action]")] public class AccountController : BaseController { - /* - private readonly UserManager _userManager; - private readonly SignInManager _signInManager; - private readonly ILogger _logger; - - public AccountController( - UserManager userManager, - SignInManager signInManager, - ILogger logger) - { - _userManager = userManager; - _signInManager = signInManager; - _logger = logger; - } - /* - [TempData] - public string ErrorMessage { get; set; } - - [HttpGet] - [AllowAnonymous] - public async Task Login(string returnUrl = null) - { - // Clear the existing external cookie to ensure a clean login process - await HttpContext.SignOutAsync(IdentityConstants.ExternalScheme); - - ViewData["ReturnUrl"] = returnUrl; - return View(); - } - */ - [HttpPost] public ActionResult _login(string username, string password) { @@ -51,20 +21,22 @@ namespace IdentityDemo.Controllers Message = "Username or password is invalid." }; - var strunz = Db.GetTable().Where(user => user.Username.Equals(username) && user.Password.Equals(password)).ToListAsync().Result; + var result = Db.GetTable().Where(user => user.Username.Equals(username) && user.Password.Equals(password)).ToListAsync().Result; - if (strunz.Count == 1) + if (result.Count == 1) { - var loggedUser = HttpContext.Session.GetString("username"); + var loggedUser = HttpContext.Session.GetString(Username); if (loggedUser==null || !loggedUser.Equals(username)) { - HttpContext.Session.SetString("username", username); - HttpContext.Session.SetString("email", strunz.First().Email); - HttpContext.Session.SetString("name", strunz.First().Name); - HttpContext.Session.SetString("isdoc", strunz.First().Doctor?"true":"false"); - //HttpContext.Session.SetString("lastname", strunz.First().LastName); + User user = result.First(); + HttpContext.Session.SetString(Username, username); + HttpContext.Session.SetString("email", user.Email); + HttpContext.Session.SetString("name", user.Name); + HttpContext.Session.SetString("role", user.Role); + //HttpContext.Session.SetString("lastname", user.LastName); + response.Success = true; - response.Message = ""; + response.Message = Request.Query["ReturnUrl"]; } else { @@ -82,24 +54,32 @@ namespace IdentityDemo.Controllers } [HttpPost] - public ActionResult _register(Register register) + public ActionResult _register(User user) { + JsonResponse response = new JsonResponse() { Success = true }; + if(ModelState.IsValid) { - User user = new User() { Username = register.Username, Email = register.Email, Password = register.Password}; try { Db.Insert(user); + _login(user.Username, user.Password); } catch { - return Json(new JsonResponse() { Success = false, Message = "Username already exist" }); + response.Success = false; + response.Message = "Username already exists"; } - _login(user.Username, user.Password); - return Json(new JsonResponse() { Success = true }); } - return Json(new JsonResponse() { Success = false, Message = "Modello non valido" }); + else + { + response.Success = false; + response.Message = "Modello non valido"; + } + + return Json(response); } + internal class JsonResponse { public bool Success { get; internal set; } diff --git a/SeniorAssistant/Controllers/HomeController.cs b/SeniorAssistant/Controllers/HomeController.cs index 10faf56..f83ab7a 100644 --- a/SeniorAssistant/Controllers/HomeController.cs +++ b/SeniorAssistant/Controllers/HomeController.cs @@ -1,17 +1,12 @@ -using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace SeniorAssistant.Controllers { [ApiExplorerSettings(IgnoreApi = true)] - public class HomeController : Controller + public class HomeController : BaseController { - private readonly ISession session; - public HomeController(IHttpContextAccessor httpContextAccessor) - { - this.session = httpContextAccessor.HttpContext.Session; - } - [Route("")] [Route("Home")] [Route("Index")] @@ -23,33 +18,41 @@ namespace SeniorAssistant.Controllers [Route("Heartbeat")] public IActionResult Heartbeat() { - return View(); + return CheckAuthorized("Heartbeat"); } [Route("Sleep")] public IActionResult Sleep() { - return View(); + return CheckAuthorized("Sleep"); } [Route("Step")] public IActionResult Step() { - return View(); + return CheckAuthorized("Step"); } [Route("Users")] public IActionResult Users() { - return View(); + return CheckAuthorized("Users"); } [Route("User/{User}")] public IActionResult SingleUser(string user) { - if(session.GetString("username") == null) - return RedirectToAction("Index"); - return View("data", user); + return CheckAuthorized("Data", user); + } + + private IActionResult CheckAuthorized(string view, object model = null) + { + if (HttpContext.Session.GetString("username") == null) + { + model = "/" + view; + view = "Index"; + } + return View(view, model); } } } \ No newline at end of file diff --git a/SeniorAssistant/Controllers/Services/BaseController.cs b/SeniorAssistant/Controllers/Services/BaseController.cs index 71be656..18bb5e4 100644 --- a/SeniorAssistant/Controllers/Services/BaseController.cs +++ b/SeniorAssistant/Controllers/Services/BaseController.cs @@ -1,10 +1,13 @@ -using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; using SeniorAssistant.Data; namespace SeniorAssistant.Controllers { public abstract class BaseController : Controller { + protected static readonly string Username = "username"; + IDataContextFactory dbFactory; SeniorDataContext db; @@ -20,5 +23,10 @@ namespace SeniorAssistant.Controllers base.Dispose(disposing); } + + protected bool IsLogged() + { + return HttpContext.Session.GetString(Username) != null; + } } } diff --git a/SeniorAssistant/Models/Register.cs b/SeniorAssistant/Models/Register.cs deleted file mode 100644 index 40bdbcf..0000000 --- a/SeniorAssistant/Models/Register.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace SeniorAssistant.Models -{ - public class Register - { - public string Username { get; set; } - public string Email { get; set; } - public string Password { get; set; } - public bool Doctor { get; set; } - } -} diff --git a/SeniorAssistant/Models/User.cs b/SeniorAssistant/Models/User.cs index 4f12d0b..911c80d 100644 --- a/SeniorAssistant/Models/User.cs +++ b/SeniorAssistant/Models/User.cs @@ -17,11 +17,10 @@ namespace SeniorAssistant.Models public string Password { get; set; } [NotNull] - public bool Doctor { get; set; } + public string Role { get; set; } public string Name { get; set; } public string LastName { get; set; } - } } diff --git a/SeniorAssistant/Startup.cs b/SeniorAssistant/Startup.cs index b2e605a..892d040 100644 --- a/SeniorAssistant/Startup.cs +++ b/SeniorAssistant/Startup.cs @@ -5,6 +5,7 @@ using LinqToDB.DataProvider.SQLite; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Authorization; using Microsoft.Data.Sqlite; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -15,6 +16,10 @@ using SeniorAssistant.Extensions; using Swashbuckle.AspNetCore.Swagger; using Microsoft.AspNetCore.Identity; using Microsoft.Extensions.DependencyInjection.Extensions; +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.AspNetCore.Authentication.Cookies; +using Microsoft.AspNetCore.Mvc.Authorization; +using Microsoft.AspNetCore.Mvc; namespace SeniorAssistant { @@ -31,7 +36,15 @@ namespace SeniorAssistant // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 public void ConfigureServices(IServiceCollection services) { - services.AddMvc(); + services.AddMvc();// config => +// { +// var policy = new AuthorizationPolicyBuilder() +// .RequireAuthenticatedUser() +// .Build(); +// config.Filters.Add(new AuthorizeFilter(policy)); +// }) +// .SetCompatibilityVersion(CompatibilityVersion.Version_2_1); + services.AddSession(); services.AddSwaggerGen(c => @@ -54,20 +67,30 @@ namespace SeniorAssistant services.Configure(Configuration.GetSection("kendo")); services.Configure(Configuration.GetSection("theme")); +// services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) +// .AddCookie(options => { +// options.LoginPath = "/"; +// options.AccessDeniedPath = "/"; +// }); + +// services.AddDefaultIdentity().AddRoles() +// .AddEntityFrameworkStores(); + services.TryAddSingleton(); - services.AddSingleton>(new IMenuItem[] + services.AddSingleton>(new List { - new SubMenu + new MenuItem("Index", "/"), + new SubMenu() { - Text = "Link veloci", + Text = "Raw Data", Items = new MenuItem[] { - new MenuItem("User", "/"), + new MenuItem("Users", "/users"), new MenuItem("Heartbeat", "/heartbeat"), new MenuItem("Sleep", "/sleep"), new MenuItem("Step", "/step") } - }, + } }); var dbFactory = new SeniorDataContextFactory( @@ -90,6 +113,7 @@ namespace SeniorAssistant app.UseSession(); app.UseStaticFiles(); +// app.UseAuthentication(); // Enable middleware to serve generated Swagger as a JSON endpoint. app.UseSwagger(); @@ -126,19 +150,15 @@ namespace SeniorAssistant db.CreateTableIfNotExists(); db.CreateTableIfNotExists(); db.CreateTableIfNotExists(); - try + db.CreateTableIfNotExists(); + + int count = 0; + foreach (string user in names) { - db.CreateTable(); - int count = 0; - foreach (string user in names) - { - var username = baseUsername + count; - db.InsertOrReplace(new User { Name = user, Username = username, Password = username, Email = username + "@email.st" } ); - count++; - } + var username = baseUsername + count; + db.InsertOrReplace(new User { Role = "user", Name = user, Username = username, Password = username, Email = username + "@email.st" } ); + count++; } - catch - { } Random rnd = new Random(); DateTime now = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); diff --git a/SeniorAssistant/Views/Home/Data.cshtml b/SeniorAssistant/Views/Home/Data.cshtml index c72a804..e4839cb 100644 --- a/SeniorAssistant/Views/Home/Data.cshtml +++ b/SeniorAssistant/Views/Home/Data.cshtml @@ -1,93 +1,107 @@ -@model string +@inject IHttpContextAccessor HttpContextAccessor +@model string + @{ ViewBag.Title = "Hello Razor"; + var session = HttpContextAccessor.HttpContext.Session; + + // Questa variabile serve a sapere se si e' autorizzati o meno. + // Per ora e' semplice ma magari si puo' peggiorare utilizzando il ruolo di Doc... etc + // (Utilizzare inject DbContext) + bool auth = session.GetString("username").Equals(Model); } -
+@if (!auth) +{ +

Non sei autorizzato a vedere i dati di @Model

+} +else +{ + // Aggiungere un qualcosa per scegliere le ore da vedere (Max 48?) +
+ \ No newline at end of file + }); + +} \ No newline at end of file diff --git a/SeniorAssistant/Views/Home/Index.cshtml b/SeniorAssistant/Views/Home/Index.cshtml index 76f15dd..575a7f8 100644 --- a/SeniorAssistant/Views/Home/Index.cshtml +++ b/SeniorAssistant/Views/Home/Index.cshtml @@ -5,23 +5,29 @@ logo sito disattivare l-aside e le opzioni se non loggato deve tornare qua --> +@model string @inject IHttpContextAccessor HttpContextAccessor @{ + ViewBag.Title = "Hello Razor"; string session = HttpContextAccessor.HttpContext.Session.GetString("username"); }
@if (session == null) { + @if (Model != null) + { +

Per poter accedere alla pagina [@Model] e' necessario essere loggati

+ } + - + } else { diff --git a/SeniorAssistant/Views/Shared/Login.cshtml b/SeniorAssistant/Views/Shared/Login.cshtml index bc96ed3..ec8c4d0 100644 --- a/SeniorAssistant/Views/Shared/Login.cshtml +++ b/SeniorAssistant/Views/Shared/Login.cshtml @@ -1,13 +1,9 @@ - - - - -