public async Task <IActionResult> Edit(int id, [Bind("LayerId,Public,Title,Url,WMSLayer")] Layer layer) { if (id != layer.LayerId) { return(NotFound()); } var layerOld = await _context.Layers.Include(m => m.LayerUsers).Include(m => m.LayerChangeLogs).ThenInclude(m => m.ChangeLog).ThenInclude(m => m.User).Where(m => m.LayerId == id).FirstOrDefaultAsync(); User me = UserHelper.GetCurrentUser(User, _context); // check if Layer is my userlayer or I am the Creator (first in changelog) or I am DM if (!User.IsInRole("DM")) { if (layerOld.LayerUsers.Where(m => m.UserId == me.UserId).Count() == 0) { ChangeLogLayer chll = layer.LayerChangeLogs.Take(1).FirstOrDefault(); if (chll?.ChangeLog.User.UserId != me.UserId) { return(RedirectToAction("NotAllowed", "Home")); } } } if (ModelState.IsValid) { try { layerOld.Public = layer.Public; layerOld.Title = layer.Title; layerOld.Url = layer.Url; layerOld.WMSLayer = layer.WMSLayer; ChangeLog cl = new ChangeLog() { Log = "Changed Layer " + layer.Title, User = me }; ChangeLogLayer cll = new ChangeLogLayer() { ChangeLog = cl, Layer = layer }; layerOld.LayerChangeLogs.Add(cll); _context.Update(layerOld); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!LayerExists(layer.LayerId)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(layer)); }
public async Task <IActionResult> Edit(string?id, [Bind("UserId, FirstName, Name, Email, enabled")] EditUserViewModel edituserVM) { User me = UserHelper.GetCurrentUser(User, db); if ((!User.IsInRole("DM")) && (me.UserId != edituserVM.UserId)) { return(RedirectToAction("NotAllowed", "Home")); } if (!User.IsInRole("DM")) { id = me.UserId; } if (id != edituserVM.UserId) { return(NotFound()); } if (ModelState.IsValid) { try { User oldUser = await db.Users.FindAsync(edituserVM.UserId); oldUser.FirstName = edituserVM.FirstName; oldUser.Name = edituserVM.Name; oldUser.Email = edituserVM.Email; db.Update(oldUser); await db.SaveChangesAsync(); // change it in keycloak List <UserPoco> ups = await GetAllUsers(false); string access_token = GetAdminAccessToken(); if (access_token != "Error") { var client = new RestClient(Configuration["Jwt:Url"] + "/auth/admin/realms/" + Configuration["Jwt:Realm"] + "/users/" + ups.Where(m => m.username == edituserVM.UserId).FirstOrDefault().id); client.Timeout = -1; var request = new RestRequest(Method.PUT); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{\"firstName\": \"" + oldUser.FirstName + "\",\r\n \"lastName\": \"" + oldUser.Name + "\",\r\n \"email\": \"" + oldUser.Email + "\", \"enabled\": \"" + edituserVM.enabled + "\"}", ParameterType.RequestBody); request.AddHeader("Authorization", "Bearer " + access_token); IRestResponse response = client.Execute(request); } } catch (DbUpdateConcurrencyException) { throw; } return(RedirectToAction(nameof(Index))); } return(View(edituserVM)); }
public async Task<IActionResult> Edit(Guid id, [Bind("GroupId,GroupName,ID_Extern,GroupStatusId, CreatorId")] Group mgroup) { if (id != mgroup.GroupId) { return NotFound(); } if (ModelState.IsValid) { Status ok = await _context.Statuses.Where(m => m.Id == StatusEnum.changed).FirstOrDefaultAsync(); mgroup.StatusId = ok.Id; // if group has Gruppe bereit -> change the corresponding projects to Bereit if (mgroup.GroupStatusId == GroupStatusEnum.Gruppe_bereit) { List<ProjectGroup> pgs = await _context.ProjectsGroups.Where(m => m.GroupId == mgroup.GroupId).ToListAsync(); foreach (ProjectGroup pg in pgs) { Project p = await _context.Projects.Include(m=>m.ProjectStatus).Where(m => m.ProjectId == pg.ProjectId).FirstOrDefaultAsync(); if (p.ProjectStatus.Id == ProjectStatusEnum.Projekt_neu) { ProjectStatus bereit = await _context.ProjectStatuses.Where(m => m.Id == ProjectStatusEnum.Projekt_bereit).FirstAsync(); p.ProjectStatus = bereit; _context.Entry(p).State = EntityState.Modified; } } } try { _context.Update(mgroup); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!GroupExists(mgroup.GroupId)) { return NotFound(); } else { throw; } } return RedirectToAction(nameof(Index)); } ViewData["GroupStatusId"] = new SelectList(_context.GroupStatuses, "Id", "Description", mgroup.GroupStatusId); ViewData["StatusId"] = new SelectList(_context.Statuses, "Id", "Descrpition", mgroup.StatusId); return View(mgroup); }