From 94fe44d055132f80bd171411ec369e1036eba345 Mon Sep 17 00:00:00 2001 From: Lucio Maranta Date: Tue, 19 Feb 2019 17:13:18 +0100 Subject: [PATCH] Added user management --- .../Controllers/MachinesUsersController.cs | 21 ++++++ Step.Database/Controllers/UsersController.cs | 55 ++++++++++++++- Step.Model/DTOModels/DTOUserModel.cs | 8 ++- Step/Controllers/WebApi/UserController.cs | 69 ++++++++++++++++++- .../components/card-axes-production.vue | 2 +- .../tooling/components/info-equipment.ts | 3 +- .../tooling/components/tooling-depot.ts | 2 +- 7 files changed, 152 insertions(+), 8 deletions(-) diff --git a/Step.Database/Controllers/MachinesUsersController.cs b/Step.Database/Controllers/MachinesUsersController.cs index f7ab1cda..6f5301ea 100644 --- a/Step.Database/Controllers/MachinesUsersController.cs +++ b/Step.Database/Controllers/MachinesUsersController.cs @@ -1,6 +1,7 @@ using Step.Model.DatabaseModels; using Step.Model.DTOModels; using System; +using System.Collections.Generic; using System.Linq; using static Step.Model.Constants; @@ -100,6 +101,26 @@ namespace Step.Database.Controllers return -1; } + public List GetRolesList() + { + return dbCtx + .Roles + .Select(x => new DTORoleModel() + { + Id = x.RoleId, + Name = x.Name + }).ToList(); + } + public void UpdateUserRole(int machineId, int userId, int roleId) + { + MachineUserModel machineUser = FindByUserId(machineId, userId); + if (machineUser == null) + return; + + machineUser.RoleId = roleId; + + dbCtx.SaveChanges(); + } } } \ No newline at end of file diff --git a/Step.Database/Controllers/UsersController.cs b/Step.Database/Controllers/UsersController.cs index 33a98d64..ed2495de 100644 --- a/Step.Database/Controllers/UsersController.cs +++ b/Step.Database/Controllers/UsersController.cs @@ -142,7 +142,7 @@ namespace Step.Database.Controllers } } - public List GetUserList() + public List GetMessageUserList() { List userList = new List(); @@ -157,5 +157,58 @@ namespace Step.Database.Controllers return userList; } + + #region User Manager + + public List GetUserList() + { + using (MachinesUsersController machineController = new MachinesUsersController()) + { + List roles = machineController.GetRolesList(); + + // Find user by Id with Role object included + var tmpUser = dbCtx + .Users + .ToList(); + + return tmpUser + .Select(x => new DTOUserModel() // Return DTOUserModel + { + Id = x.UserId, + Username = x.Username, + FirstName = x.FirstName, + LastName = x.LastName, + Language = x.Language, + Role = machineController.GetUserRoleData(MachineConfig.MachineId, x.UserId) + }).ToList(); + } + } + + public DTOUserModel UpdateUserData(int userId, DTONewUserModel userData) + { + UserModel user = FindById(userId); + + if (user != null) + { + user.FirstName = userData.FirstName; + user.LastName = userData.LastName; + user.Username = userData.Username; + + dbCtx.SaveChanges(); + } + + return GetUserInfo(userId); + } + + public DTOUserModel UpdateUserRole(int userId, int roleId) + { + using (MachinesUsersController machineController = new MachinesUsersController()) + { + machineController.UpdateUserRole(MachineConfig.MachineId, userId, roleId); + } + + return GetUserInfo(userId); + } + #endregion User Manager } } \ No newline at end of file diff --git a/Step.Model/DTOModels/DTOUserModel.cs b/Step.Model/DTOModels/DTOUserModel.cs index 492c6ef9..56699d5c 100644 --- a/Step.Model/DTOModels/DTOUserModel.cs +++ b/Step.Model/DTOModels/DTOUserModel.cs @@ -8,12 +8,16 @@ using System.Threading.Tasks; namespace Step.Model.DTOModels { - public class DTOMessageUserModel + public class DTONewUserModel { - public int Id { get; set; } public string Username { get; set; } public string FirstName { get; set; } public string LastName { get; set; } + } + + public class DTOMessageUserModel : DTONewUserModel + { + public int Id { get; set; } public static explicit operator DTOMessageUserModel(UserModel user) { diff --git a/Step/Controllers/WebApi/UserController.cs b/Step/Controllers/WebApi/UserController.cs index c054f25b..213f80bd 100644 --- a/Step/Controllers/WebApi/UserController.cs +++ b/Step/Controllers/WebApi/UserController.cs @@ -101,7 +101,7 @@ namespace Step.Controllers.WebApi [Route("list"), HttpGet] [WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.USER_FUNCTIONS, Action = ACTIONS.READ)] - public IHttpActionResult GetUserList() + public IHttpActionResult GetMessageUserList() { // Validate user id var identity = User.Identity as ClaimsIdentity; @@ -113,10 +113,75 @@ namespace Step.Controllers.WebApi using (UsersController usersController = new UsersController()) { // Update database with new language - List users = usersController.GetUserList(); + List users = usersController.GetMessageUserList(); return Ok(users); } } + + + #region User Manager + + [Route("manager/list"), HttpGet] + [WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.USER_FUNCTIONS, Action = ACTIONS.READ)] + public IHttpActionResult GetUserList() + { + using (UsersController usersController = new UsersController()) + { + // Update database with new language + List users = usersController.GetUserList(); + + return Ok(users); + } + } + + [Route("manager/user/{userId:int}"), HttpPut] + [WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.USER_FUNCTIONS, Action = ACTIONS.WRITE)] + public IHttpActionResult UpdateUserData(int userId, [FromBody] DTONewUserModel userData) + { + using (UsersController usersController = new UsersController()) + { + // Update database with new user data + var user = usersController.UpdateUserData(userId, userData); + + return Ok(user); + } + } + + [Route("manager/user/{userId:int}"), HttpDelete] + [WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.USER_FUNCTIONS, Action = ACTIONS.WRITE)] + public IHttpActionResult DeleteUserData(int userId) + { + return Unauthorized(); + } + + // Role + + [Route("manager/role/list"), HttpGet] + [WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.USER_FUNCTIONS, Action = ACTIONS.READ)] + public IHttpActionResult GetRoleList() + { + using (MachinesUsersController machineController = new MachinesUsersController()) + { + List roles = machineController.GetRolesList(); + + return Ok(roles); + } + } + + [Route("manager/user/{userId:int}/role/{roleId:int}"), HttpPut] + [WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.USER_FUNCTIONS, Action = ACTIONS.WRITE)] + public IHttpActionResult UpdateUserRole(int userId, int roleId) + { + using (UsersController usersController = new UsersController()) + { + // Update database with new user's role + var user = usersController.UpdateUserRole(userId, roleId); + + return Ok(user); + } + } + + #endregion User Manager } } \ No newline at end of file diff --git a/Step/wwwroot/src/app_modules/production/components/card-axes-production.vue b/Step/wwwroot/src/app_modules/production/components/card-axes-production.vue index b19805f2..af35945b 100644 --- a/Step/wwwroot/src/app_modules/production/components/card-axes-production.vue +++ b/Step/wwwroot/src/app_modules/production/components/card-axes-production.vue @@ -7,7 +7,7 @@ {{a.name}}
- {{a.value.toFixed(3)}} + {{a.value.toFixed(3)}} {{a.umeas}}
diff --git a/Step/wwwroot/src/app_modules/tooling/components/info-equipment.ts b/Step/wwwroot/src/app_modules/tooling/components/info-equipment.ts index a041efc4..afb4bb75 100644 --- a/Step/wwwroot/src/app_modules/tooling/components/info-equipment.ts +++ b/Step/wwwroot/src/app_modules/tooling/components/info-equipment.ts @@ -51,7 +51,8 @@ export default class InfoEquipment extends Vue { if (this.toolsConfiguration.length != 0) { for (const key in this.toolsConfiguration) { let t = this.toolsConfiguration[key]; - cat.add(t.category); + if(t.category != "family") + cat.add(t.category); } return Array.from(cat.values()); } diff --git a/Step/wwwroot/src/app_modules/tooling/components/tooling-depot.ts b/Step/wwwroot/src/app_modules/tooling/components/tooling-depot.ts index 4e7cafe7..75f5c369 100644 --- a/Step/wwwroot/src/app_modules/tooling/components/tooling-depot.ts +++ b/Step/wwwroot/src/app_modules/tooling/components/tooling-depot.ts @@ -512,7 +512,7 @@ export default class depot extends Vue { public dataForOpenInfoNcShank(id) { let shank = (this.$store.state as AppModel).tooling.ncShanks.find(t => t.id == id); - console.log(shank) + if (shank.childsTools.length == 1) { ModalHelper.infoEquipmentModal.enableModalShank = false; ModalHelper.infoEquipmentModal.enableModalTool = true;