Пример #1
0
 public ActionResult SavePermission(CompanyPermissionVm permission)
 {
     try
     {
         var mgr = new AspNetClaimsManager();
         if (permission.Id == null)
         {
             mgr.Insert(new AspNetClaims()
             {
                 Id         = Guid.NewGuid(),
                 ClaimType  = permission.ClaimType,
                 ClaimValue = permission.ClaimValue,
                 CreatedAt  = DateTime.Now
             });
         }
         else
         {
             var claim = mgr.GetById(Guid.Parse(permission.Id));
             claim.ClaimValue = permission.ClaimValue;
             claim.ClaimType  = permission.ClaimType;
             mgr.Update(claim);
         }
         return(Json(new JsonResponse()
         {
             IsSucess = true
         }, JsonRequestBehavior.AllowGet));
     }
     catch (Exception ex)
     {
         return(Json(new JsonResponse()
         {
             IsSucess = false, ErrorMessage = ex.Message
         }, JsonRequestBehavior.AllowGet));
     }
 }
Пример #2
0
 public ActionResult EditPermission(Guid?id)
 {
     try
     {
         var mgr   = new AspNetClaimsManager();
         var claim = mgr.GetById(id.Value, "RoleClaims");
         var model = new CompanyPermissionVm()
         {
             Id          = claim.Id.ToString(),
             ClaimType   = claim.ClaimType,
             ClaimValue  = claim.ClaimValue,
             RolesCount  = claim.RoleClaims.Count.ToString(),
             IsEditable  = !SecurityConstants.ClaimsAll.Contains(claim.ClaimValue),
             IsDeletable = !SecurityConstants.ClaimsAll.Contains(claim.ClaimValue)
         };
         TempData["ClaimTypes"] = new SelectList(ClaimTypes, "Value", "Text");
         return(PartialView("~/Views/Company/PermissionAdd.cshtml", model));
     }
     catch (Exception ex)
     {
         return(Json(new JsonResponse()
         {
             IsSucess = false, ErrorMessage = ex.Message
         }, JsonRequestBehavior.AllowGet));
     }
 }
Пример #3
0
 public ActionResult DeletePermission(string Id)
 {
     try
     {
         var mgr = new AspNetClaimsManager();
         mgr.DeleteById(Guid.Parse(Id));
         return(Json(new JsonResponse()
         {
             IsSucess = true
         }, JsonRequestBehavior.AllowGet));
     }
     catch (Exception ex)
     {
         return(Json(new JsonResponse()
         {
             IsSucess = false, ErrorMessage = ex.Message
         }, JsonRequestBehavior.AllowGet));
     }
 }
Пример #4
0
        public ActionResult InitializePermissions([ModelBinder(typeof(DataTablesBinder))] IDataTablesRequest requestModel)
        {
            var mgr = new AspNetClaimsManager();
            IEnumerable <CompanyPermissionVm> permissions = mgr.GetAll("RoleClaims").Select(x => new CompanyPermissionVm()
            {
                Id          = x.Id.ToString(),
                ClaimType   = x.ClaimType,
                ClaimValue  = x.ClaimValue,
                RolesCount  = x.RoleClaims.Count.ToString(),
                IsEditable  = !SecurityConstants.ClaimsAll.Contains(x.ClaimValue),
                IsDeletable = !SecurityConstants.ClaimsAll.Contains(x.ClaimValue)
            }).ToList();

            var totalCount = permissions.Count();

            #region Filtering
            // Apply filters for searching
            if (requestModel.Search.Value != string.Empty)
            {
                var value = requestModel.Search.Value.Trim();
                permissions = permissions.AsEnumerable().
                              Where(p => p.ClaimValue.Contains(value)
                                    );
            }

            var filteredCount = permissions.Count();

            #endregion Filtering

            #region Sorting
            // Sorting
            var sortedColumns = requestModel.Columns.GetSortedColumns();
            var orderByString = String.Empty;

            if (sortedColumns.Count() > 0)
            {
                foreach (var column in sortedColumns)
                {
                    if (column.Data == "ClaimValue")
                    {
                        permissions = column.SortDirection.ToString() == "Ascendant" ?
                                      permissions.OrderBy(x => x.ClaimValue) :
                                      permissions.OrderByDescending(x => x.ClaimValue);
                    }

                    if (column.Data == "ClaimType")
                    {
                        permissions = column.SortDirection.ToString() == "Ascendant" ?
                                      permissions.OrderBy(x => x.ClaimType) :
                                      permissions.OrderByDescending(x => x.ClaimType);
                    }

                    if (column.Data == "RolesCount")
                    {
                        permissions = column.SortDirection.ToString() == "Ascendant" ?
                                      permissions.OrderBy(x => x.RolesCount) :
                                      permissions.OrderByDescending(x => x.RolesCount);
                    }
                }
                orderByString = "Ordered";
            }

            if (orderByString == string.Empty)
            {
                permissions = permissions.OrderBy(x => x.ClaimType);
            }
            #endregion Sorting

            // Paging
            if (requestModel.Length != -1)
            {
                permissions = permissions.Skip(requestModel.Start).Take(requestModel.Length);
            }

            var result = permissions.
                         ToList()
                         .Select(x => new
            {
                Id         = x.Id.ToString(),
                ClaimType  = x.ClaimType,
                ClaimValue = x.ClaimValue,
                RolesCount = x.RolesCount.ToString(),
                Actions    = GetActionsPermissions(x.Id),
            });

            return(Json(new DataTablesResponse
                            (requestModel.Draw, result, filteredCount, totalCount),
                        JsonRequestBehavior.AllowGet));
        }
Пример #5
0
        public ActionResult InitializeRoles([ModelBinder(typeof(DataTablesBinder))] IDataTablesRequest requestModel)
        {
            var mgr = new AspNetClaimsManager();

            List <CompanyRoleVm> roles = new List <CompanyRoleVm>();

            foreach (var role in RoleManager.Roles)
            {
                var roleVm = new CompanyRoleVm()
                {
                    Id          = role.Id,
                    Name        = role.Name,
                    Description = role.Description,
                    IsDeletable = role.IsDeletable,
                    IsEditable  = role.IsEditable
                };

                List <SelectItemPair> permissions = new List <SelectItemPair>();
                foreach (var claim in mgr.GetAll("RoleClaims").ToList())
                {
                    var permission = new SelectItemPair()
                    {
                        Text = claim.ClaimValue, Value = claim.Id.ToString()
                    };
                    var roleClaimRoleIds = claim.RoleClaims.Select(x => x.RoleID); // ctx.RoleClaims.Where(x => x.RoleID == roleVm.Id).Select(x => x.ClaimID);
                    if (roleClaimRoleIds.Contains(roleVm.Id))
                    {
                        permission.Selected = true;
                    }
                    permissions.Add(permission);
                }
                roleVm.Permissions = permissions;
                roles.Add(roleVm);
            }

            var totalCount = roles.Count();

            #region Filtering
            // Apply filters for searching
            if (requestModel.Search.Value != string.Empty)
            {
                var value = requestModel.Search.Value.Trim();
                roles = roles.Where(p => p.Name.Contains(value)).ToList();
            }

            var filteredCount = roles.Count();

            #endregion Filtering

            #region Sorting
            // Sorting
            var sortedColumns = requestModel.Columns.GetSortedColumns();
            var orderByString = String.Empty;

            if (sortedColumns.Count() > 0)
            {
                foreach (var column in sortedColumns)
                {
                    if (column.Data == "Name")
                    {
                        roles = column.SortDirection.ToString() == "Ascendant" ?
                                roles.OrderBy(x => x.Name).ToList() :
                                roles.OrderByDescending(x => x.Name).ToList();
                    }

                    if (column.Data == "Description")
                    {
                        roles = column.SortDirection.ToString() == "Ascendant" ?
                                roles.OrderBy(x => x.Description).ToList() :
                                roles.OrderByDescending(x => x.Description).ToList();
                    }
                }
                orderByString = "Ordered";
            }

            if (orderByString == string.Empty)
            {
                roles = roles.OrderBy(x => x.Name).ToList();
            }
            #endregion Sorting

            // Paging
            if (requestModel.Length != -1)
            {
                roles = roles.Skip(requestModel.Start).Take(requestModel.Length).ToList();
            }

            var result = roles.
                         ToList()
                         .Select(x => new
            {
                Id          = x.Id.ToString(),
                Name        = x.Name,
                Description = x.Description,
                Permissions = GetPermissions(x),
                Actions     = GetActionsRoles(x.Id),
            });

            return(Json(new DataTablesResponse
                            (requestModel.Draw, result, filteredCount, totalCount),
                        JsonRequestBehavior.AllowGet));
        }