From d0d02006797525f5b92dfdc16b7df0028e5d938a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A4=D1=80=D0=BE=D0=BB=D0=BE=D0=B2?= Date: Thu, 3 Feb 2022 08:23:52 +0500 Subject: [PATCH] Add some permissions, new web client --- AsbCloudDb/Model/AsbCloudDbContext.cs | 2 +- AsbCloudWebApi/Controllers/AuthController.cs | 15 ++-- AsbCloudWebApi/Controllers/FileController.cs | 15 +++- AsbCloudWebApi/Docs/Create permissions.ods | Bin 45145 -> 50038 bytes AsbCloudWebApi/wwwroot/asset-manifest.json | 68 ++++++++++--------- AsbCloudWebApi/wwwroot/index.html | 2 +- 6 files changed, 62 insertions(+), 40 deletions(-) diff --git a/AsbCloudDb/Model/AsbCloudDbContext.cs b/AsbCloudDb/Model/AsbCloudDbContext.cs index 7f9a0ab1..f56a700a 100644 --- a/AsbCloudDb/Model/AsbCloudDbContext.cs +++ b/AsbCloudDb/Model/AsbCloudDbContext.cs @@ -235,7 +235,7 @@ namespace AsbCloudDb.Model entity.HasOne(d => d.User) .WithMany(p => p.FileMarks) .HasForeignKey(d => d.IdUser) - .OnDelete(DeleteBehavior.Cascade) + .OnDelete(DeleteBehavior.Cascade) .HasConstraintName("t_user_t_file_mark_fk"); entity.HasOne(d => d.FileInfo) diff --git a/AsbCloudWebApi/Controllers/AuthController.cs b/AsbCloudWebApi/Controllers/AuthController.cs index 7b9e828e..549fed3c 100644 --- a/AsbCloudWebApi/Controllers/AuthController.cs +++ b/AsbCloudWebApi/Controllers/AuthController.cs @@ -13,10 +13,12 @@ namespace AsbCloudWebApi.Controllers public class AuthController : ControllerBase { private readonly IAuthService authService; + private readonly IUserService userService; - public AuthController(IAuthService authService) + public AuthController(IAuthService authService, IUserService userService) { this.authService = authService; + this.userService = userService; } /// @@ -81,14 +83,15 @@ namespace AsbCloudWebApi.Controllers /// Ок [Authorize] [HttpPut("{idUser}/ChangePassword")] - [Permission] public IActionResult ChangePassword([FromRoute]int idUser, [FromBody]string newPassword) { - const string roleName = "Администратор"; - var allow = (User.GetUserId() == idUser) || User.IsInRole(roleName); + var editorUserId = User.GetUserId(); - if (!allow) - return Forbid($"You must be an {roleName} or user with id:{idUser}."); + if (editorUserId is null) + return Forbid(); + + if (!((editorUserId == idUser) || userService.HasPermission((int)editorUserId, "Auth.edit"))) + return Forbid(); var code = authService.ChangePassword(idUser, newPassword); return code switch diff --git a/AsbCloudWebApi/Controllers/FileController.cs b/AsbCloudWebApi/Controllers/FileController.cs index 7a11b397..f4ce6b09 100644 --- a/AsbCloudWebApi/Controllers/FileController.cs +++ b/AsbCloudWebApi/Controllers/FileController.cs @@ -31,13 +31,14 @@ namespace AsbCloudWebApi.Controllers /// id скважины /// id категории файла /// Коллекция файлов + /// dependency /// Токен отмены задачи /// [HttpPost] [Permission] [ProducesResponseType(typeof(int), (int)System.Net.HttpStatusCode.OK)] public async Task SaveFilesAsync(int idWell, int idCategory, - [FromForm] IFormFileCollection files, CancellationToken token = default) + [FromForm] IFormFileCollection files, [FromServices] IUserService userService, CancellationToken token = default) { int? idCompany = User.GetCompanyId(); int? idUser = User.GetUserId(); @@ -49,6 +50,9 @@ namespace AsbCloudWebApi.Controllers idWell, token).ConfigureAwait(false)) return Forbid(); + if(!userService.HasPermission((int)idUser, $"File.edit{idCategory}")) + return Forbid(); + var fileInfoCollection = files.Select(f => new FileInfoDto { Name = f.FileName, @@ -149,20 +153,29 @@ namespace AsbCloudWebApi.Controllers /// /// id скважины /// id запрашиваемого файла + /// dependency /// Токен отмены задачи /// [HttpDelete("{idFile}")] [Permission] [ProducesResponseType(typeof(int), (int)System.Net.HttpStatusCode.OK)] public async Task DeleteAsync(int idWell, int idFile, + [FromServices] IUserService userService, CancellationToken token = default) { + int? idUser = User.GetUserId(); + int? idCompany = User.GetCompanyId(); if (idCompany is null || !await wellService.IsCompanyInvolvedInWellAsync((int)idCompany, idWell, token).ConfigureAwait(false)) return Forbid(); + var file = await fileService.GetInfoAsync((int)idFile,token); + + if (!userService.HasPermission((int)idUser, $"File.edit{file.IdCategory}")) + return Forbid(); + var result = await fileService.MarkAsDeletedAsync(idFile, token); return Ok(result); diff --git a/AsbCloudWebApi/Docs/Create permissions.ods b/AsbCloudWebApi/Docs/Create permissions.ods index ec824b8e8fd2372cbbf1e95115da239d01630a99..9bf04a91918155ddee277e04d87981a6e5a5aa54 100644 GIT binary patch delta 27332 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 delta 22378 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

WPAgH@6P-KNACFXTIhJ;NJkT_TdlU_G zyK?q?-s~^`93(%tVjA))oXBmz=s~TkA*hz$X%=bj776S{wQdjlWJU#uDQ_87J$|m>Q9;4&c*2d&H%8#Qzh<651 z*6kMstpqb=f*bGnZp6=QQtsTcU|hGfW(YbkUv}S1`Fh}Pp)h=_Ch$FY110Qm30MR< zPGD!}=<5djjr8X60#VOJbZaCj5yWPz`snSOzT4UX2VR|-5ayK`y!Y$Bm3-FQV@q;0 zu>#nWS05C#LtCU8lxlt@TTX3^f#rbq<{K0Hsx=RPcK10K_n_h$6uy&L7C=wDv@J04 z3T>Mk=;MHBPn68D(Py(W#z79y#IK9MN$O(zHsRzFSY*f7vHfUpdM$dYloLT?y6nD4 zxHy$MS3NJSu59t5ecy^vekk(0ws@;bx}d_coFSP8|3M0CuM2%>|kYa#WUB= zexgQ%Br>kzvOWXs2kg`W!-gjES8NboHMzI5zN$4`A>DJYYD5G}BOsN0+g{#LzIk(< z!Tvbe0F_7?SN836wz-`Q|5RIP09=^}dQi~HN3DT60LVDEXlzM{Gi_hxPrXABinN*F ztQjuIAKGcn+7W9jDjhnrWyobTb=2NrNBO8sVO1k}Ay|xHIR5&T?oJqdv2=jEWaLg1 z_Q)Nde9Sz3$_o(j!p$FzKPb1e3@&0`>csKN^mwL5ZZRQ{qfSZV8xw$f?s&x=|JDN& zcQ<`r4{9#@Nz5AQO;887{J~L|L~@C)IY) zr*6H)>l`M?o1zk9(GXE}=T>W5bBu7_G{1kf_NroP&zHuZagJ1sFACR{1=JszcyL;EC!a5&Oh&CI zbXrhUIF|Na|Iw{{f!VbIt<1Y25AP!6;X4=BO4<(!e*~a$5$~mSmuC*HWr}png)8HL zg{Db4#-^*6a0iD=6F%W?sJRXVNiT~;f_15rUx;_k8XzbH+0KToQ9X_)C5=t9V&R{< zdvp~!s;_xbR!iGpneTOvv2jfebMW1XU(k*}Kj_(WneZGIY}nXl3FvhkIQ7H8bk-9H zqSr=m%M|@-_<_PgSJ$j|gy}ub78=H%af5A3uu9BetGa!R+zkJ1`ceq|vCe z+nx2V#*4e#&?bSTnMSGI_k1t+_GvTBID?e5EeiQL^T|Kk|CY42EQliu#JH%*F% z!Pc+n|Fz0XI?@a?qwo4>+cmHO?LQv*5C#TMC!g!mcRW4*?_|+!S9vvMPz((87vDer zhk+p`DZW{Zb$4WXpO&P?W*+558wLh%Cm$cT8!q1e9PLlv7IedvH?4AD>o=+W3=BN~ y8ciUHqebK*eYAg??$E#fCeej~!2x%}$LWU8-r&q&Ge8CgPVngj4*02v{^>u<$l5dj diff --git a/AsbCloudWebApi/wwwroot/asset-manifest.json b/AsbCloudWebApi/wwwroot/asset-manifest.json index 3adca2c8..ab5044e8 100644 --- a/AsbCloudWebApi/wwwroot/asset-manifest.json +++ b/AsbCloudWebApi/wwwroot/asset-manifest.json @@ -1,40 +1,46 @@ { "files": { - "main.css": "/static/css/main.dd1fcee2.chunk.css", - "main.js": "/static/js/main.b2e71633.chunk.js", - "main.js.map": "/static/js/main.b2e71633.chunk.js.map", - "runtime-main.js": "/static/js/runtime-main.33aef657.js", - "runtime-main.js.map": "/static/js/runtime-main.33aef657.js.map", - "static/js/2.968888d9.chunk.js": "/static/js/2.968888d9.chunk.js", - "static/js/2.968888d9.chunk.js.map": "/static/js/2.968888d9.chunk.js.map", - "static/js/3.d96a3708.chunk.js": "/static/js/3.d96a3708.chunk.js", - "static/js/3.d96a3708.chunk.js.map": "/static/js/3.d96a3708.chunk.js.map", - "static/js/4.a0d32a2c.chunk.js": "/static/js/4.a0d32a2c.chunk.js", - "static/js/4.a0d32a2c.chunk.js.map": "/static/js/4.a0d32a2c.chunk.js.map", - "static/js/5.8306e86d.chunk.js": "/static/js/5.8306e86d.chunk.js", - "static/js/5.8306e86d.chunk.js.map": "/static/js/5.8306e86d.chunk.js.map", - "static/js/6.642e7ca1.chunk.js": "/static/js/6.642e7ca1.chunk.js", - "static/js/6.642e7ca1.chunk.js.map": "/static/js/6.642e7ca1.chunk.js.map", - "static/js/7.d412fe5e.chunk.js": "/static/js/7.d412fe5e.chunk.js", - "static/js/7.d412fe5e.chunk.js.map": "/static/js/7.d412fe5e.chunk.js.map", - "static/js/8.0292b3ca.chunk.js": "/static/js/8.0292b3ca.chunk.js", - "static/js/8.0292b3ca.chunk.js.map": "/static/js/8.0292b3ca.chunk.js.map", - "static/js/9.35059bd2.chunk.js": "/static/js/9.35059bd2.chunk.js", - "static/js/9.35059bd2.chunk.js.map": "/static/js/9.35059bd2.chunk.js.map", - "static/js/10.de99360f.chunk.js": "/static/js/10.de99360f.chunk.js", - "static/js/10.de99360f.chunk.js.map": "/static/js/10.de99360f.chunk.js.map", - "static/js/11.8f392911.chunk.js": "/static/js/11.8f392911.chunk.js", - "static/js/11.8f392911.chunk.js.map": "/static/js/11.8f392911.chunk.js.map", + "main.css": "/static/css/main.6f0755b9.chunk.css", + "main.js": "/static/js/main.7c7cb383.chunk.js", + "main.js.map": "/static/js/main.7c7cb383.chunk.js.map", + "runtime-main.js": "/static/js/runtime-main.b3b46d3d.js", + "runtime-main.js.map": "/static/js/runtime-main.b3b46d3d.js.map", + "static/js/2.bf9b3ba2.chunk.js": "/static/js/2.bf9b3ba2.chunk.js", + "static/js/2.bf9b3ba2.chunk.js.map": "/static/js/2.bf9b3ba2.chunk.js.map", + "static/css/3.03947450.chunk.css": "/static/css/3.03947450.chunk.css", + "static/js/3.d34c16b8.chunk.js": "/static/js/3.d34c16b8.chunk.js", + "static/js/3.d34c16b8.chunk.js.map": "/static/js/3.d34c16b8.chunk.js.map", + "static/js/4.2ad36218.chunk.js": "/static/js/4.2ad36218.chunk.js", + "static/js/4.2ad36218.chunk.js.map": "/static/js/4.2ad36218.chunk.js.map", + "static/js/5.acfe9843.chunk.js": "/static/js/5.acfe9843.chunk.js", + "static/js/5.acfe9843.chunk.js.map": "/static/js/5.acfe9843.chunk.js.map", + "static/js/6.dc92bc85.chunk.js": "/static/js/6.dc92bc85.chunk.js", + "static/js/6.dc92bc85.chunk.js.map": "/static/js/6.dc92bc85.chunk.js.map", + "static/js/7.04ca453e.chunk.js": "/static/js/7.04ca453e.chunk.js", + "static/js/7.04ca453e.chunk.js.map": "/static/js/7.04ca453e.chunk.js.map", + "static/js/8.22b44d11.chunk.js": "/static/js/8.22b44d11.chunk.js", + "static/js/8.22b44d11.chunk.js.map": "/static/js/8.22b44d11.chunk.js.map", + "static/js/9.ce938494.chunk.js": "/static/js/9.ce938494.chunk.js", + "static/js/9.ce938494.chunk.js.map": "/static/js/9.ce938494.chunk.js.map", + "static/js/10.85013738.chunk.js": "/static/js/10.85013738.chunk.js", + "static/js/10.85013738.chunk.js.map": "/static/js/10.85013738.chunk.js.map", + "static/js/11.f78b37df.chunk.js": "/static/js/11.f78b37df.chunk.js", + "static/js/11.f78b37df.chunk.js.map": "/static/js/11.f78b37df.chunk.js.map", + "static/js/12.cb29526d.chunk.js": "/static/js/12.cb29526d.chunk.js", + "static/js/12.cb29526d.chunk.js.map": "/static/js/12.cb29526d.chunk.js.map", + "static/js/13.438f2178.chunk.js": "/static/js/13.438f2178.chunk.js", + "static/js/13.438f2178.chunk.js.map": "/static/js/13.438f2178.chunk.js.map", "index.html": "/index.html", - "static/css/main.dd1fcee2.chunk.css.map": "/static/css/main.dd1fcee2.chunk.css.map", - "static/js/2.968888d9.chunk.js.LICENSE.txt": "/static/js/2.968888d9.chunk.js.LICENSE.txt", + "static/css/3.03947450.chunk.css.map": "/static/css/3.03947450.chunk.css.map", + "static/css/main.6f0755b9.chunk.css.map": "/static/css/main.6f0755b9.chunk.css.map", + "static/js/2.bf9b3ba2.chunk.js.LICENSE.txt": "/static/js/2.bf9b3ba2.chunk.js.LICENSE.txt", "static/media/ClusterIcon.a395f860.svg": "/static/media/ClusterIcon.a395f860.svg", "static/media/DepositIcon.6de7c7ae.svg": "/static/media/DepositIcon.6de7c7ae.svg" }, "entrypoints": [ - "static/js/runtime-main.33aef657.js", - "static/js/2.968888d9.chunk.js", - "static/css/main.dd1fcee2.chunk.css", - "static/js/main.b2e71633.chunk.js" + "static/js/runtime-main.b3b46d3d.js", + "static/js/2.bf9b3ba2.chunk.js", + "static/css/main.6f0755b9.chunk.css", + "static/js/main.7c7cb383.chunk.js" ] } \ No newline at end of file diff --git a/AsbCloudWebApi/wwwroot/index.html b/AsbCloudWebApi/wwwroot/index.html index 25fbd8ab..1161009d 100644 --- a/AsbCloudWebApi/wwwroot/index.html +++ b/AsbCloudWebApi/wwwroot/index.html @@ -1 +1 @@ -АСБ Vision

ц \ No newline at end of file +АСБ Vision
\ No newline at end of file