Esempio n. 1
0
        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));
        }
        // GET: Users/Edit/5
        public async Task <IActionResult> Edit(string?id)
        {
            User me = UserHelper.GetCurrentUser(User, db);

            if (!User.IsInRole("DM"))
            {
                id = me.UserId;
            }
            else if (id == null)
            {
                id = me.UserId;
            }

            if (id == null)
            {
                return(NotFound());
            }

            var edituser = await db.Users.FindAsync(id);

            List <UserPoco> ups = await GetAllUsers();

            if (edituser == null)
            {
                if (ups.Where(m => m.username == id).Any())
                {
                    UserPoco up = ups.Where(m => m.username == id).First();
                    edituser = new User();

                    edituser.Name      = up.lastName;
                    edituser.FirstName = up.firstName;
                    edituser.Email     = up.email;
                    edituser.UserId    = up.username;

                    edituser.Status = db.Statuses.Where(m => m.Id == StatusEnum.unchanged).FirstOrDefault();

                    db.Entry(edituser).State = EntityState.Added;
                    db.Users.Add(edituser);
                    await db.SaveChangesAsync();
                }
            }

            EditUserViewModel euvm = new EditUserViewModel()
            {
                UserId = edituser.UserId, Email = edituser.Email, FirstName = edituser.FirstName, Name = edituser.Name, enabled = ups.Where(m => m.username == edituser.UserId).FirstOrDefault().enabled, roles = ups.Where(m => m.username == edituser.UserId).FirstOrDefault().roles
            };

            return(View(euvm));
        }
        public async Task<IActionResult> EditUsersInGroup([FromBody] Users data)
        {
            var mgroup = await _context.Groups
                .Include(m => m.GroupUsers)
                .FirstOrDefaultAsync(m => m.GroupId == data.guid);
            if (mgroup == null)
            {
                return NotFound();
            }

            foreach (GroupUser guOld in mgroup.GroupUsers)
            {
                _context.GroupsUsers.Remove(guOld);
            }


            foreach (UserIds userid in data.items)
            {
                DB.Models.Domain.User u = await _context.Users.FindAsync(userid.value);
                if (u!=null)
                {
                    GroupUser gu = new GroupUser() { Group = mgroup, User = u };
                    _context.GroupsUsers.Add(gu);
                }

            }


                await _context.SaveChangesAsync();


            return Content("OK", "application/json");
        }
Esempio n. 4
0
        public async Task <IActionResult> Create([Bind("LayerId,Public,Title,Url,WMSLayer")] Layer layer)
        {
            if (ModelState.IsValid)
            {
                User me = UserHelper.GetCurrentUser(User, _context);


                ChangeLog cl = new ChangeLog()
                {
                    Log = "New Layer " + layer.Title, User = me
                };
                ChangeLogLayer cll = new ChangeLogLayer()
                {
                    ChangeLog = cl, Layer = layer
                };
                layer.LayerChangeLogs = new List <ChangeLogLayer>();
                layer.LayerChangeLogs.Add(cll);

                if (!layer.Public)
                {
                    UserLayer ul = new UserLayer()
                    {
                        User = me, Layer = layer
                    };
                    layer.LayerUsers = new List <UserLayer>();
                    layer.LayerUsers.Add(ul);
                }

                _context.Add(layer);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(layer));
        }
        public async Task <IActionResult> Delete(Guid id)
        {
            User user = Helpers.UserHelper.GetCurrentUser(User, db);

            ReferenceGeometry rg = await db.Geometries
                                   .Include(m => m.ProjectGroup).ThenInclude(pg => pg.Group).ThenInclude(g => g.GroupUsers)
                                   .Where(m => m.GeometryId == id).FirstOrDefaultAsync();

            if (rg == null)
            {
                return(StatusCode(404));
            }
            // No right for it, User is not in Group

            if ((rg.ProjectGroup.Group.GroupUsers.Any(m => m.UserId == user.UserId)) || User.IsInRole("DM"))
            {
                rg.StatusId = StatusEnum.deleted;
                ChangeLog cl = new ChangeLog()
                {
                    Log = "deleted geometry", User = user
                };
                db.ChangeLogs.Add(cl);
                ChangeLogGeometry clg = new ChangeLogGeometry()
                {
                    ChangeLog = cl, Geometry = rg
                };
                db.ChangeLogsGeometries.Add(clg);

                db.Entry(rg).State = EntityState.Modified;
                await db.SaveChangesAsync();

                return(Content("OK"));
            }

            // No right for it, User is not in Group

            return(StatusCode(403));
        }
        public async Task <IActionResult> Delete(Guid id)
        {
            User user = Helpers.UserHelper.GetCurrentUser(User, db);

            Record r = await db.Records
                       .Include(m => m.ProjectGroup).ThenInclude(pg => pg.Group).ThenInclude(g => g.GroupUsers)
                       .Where(m => m.RecordId == id).FirstOrDefaultAsync();

            if (r == null)
            {
                return(StatusCode(404));
            }
            // No right for it, User is not in Group

            if ((r.ProjectGroup.Group.GroupUsers.Any(m => m.UserId == user.UserId)) || User.IsInRole("DM"))
            {
                r.StatusId = StatusEnum.deleted;
                ChangeLog cl = new ChangeLog()
                {
                    Log = "deleted record", User = user
                };
                db.ChangeLogs.Add(cl);
                ChangeLogRecord clr = new ChangeLogRecord()
                {
                    ChangeLog = cl, Record = r
                };
                db.ChangeLogsRecords.Add(clr);

                db.Entry(r).State = EntityState.Modified;
                await db.SaveChangesAsync();

                return(Content("OK"));
            }

            // No right for it, User is not in Group

            return(StatusCode(403));
        }