Пример #1
0
        public static string GetPermissions(string PermissionName, string PermissionStrings)
        {
            string permissions = "";
            List <PermissionString> permissionstrings = JsonSerializer.Deserialize <List <PermissionString> >(PermissionStrings);
            PermissionString        permissionstring  = permissionstrings.Where(item => item.PermissionName == PermissionName).FirstOrDefault();

            if (permissionstring != null)
            {
                permissions = permissionstring.Permissions;
            }
            return(permissions);
        }
        public static List <string> GetPermissionList(this string packedPermissions)
        {
            var usersPermissions = packedPermissions.UnpackPermissionsFromString().ToArray();

            List <string> PermissionList = new List <string>();

            foreach (var PermissionString in usersPermissions)
            {
                PermissionList.Add(PermissionString.ToString());
            }

            return(PermissionList);
        }
Пример #3
0
        public List <Permission> DecodePermissions(string Permissions, int SiteId, string EntityName, int EntityId)
        {
            List <Role>       roles       = Roles.GetRoles(SiteId).ToList();
            List <Permission> permissions = new List <Permission>();
            string            perm        = "";
            string            permissionname;
            string            permissionstring;

            foreach (string PermissionString in Permissions.Split(new char[] { '{' }, StringSplitOptions.RemoveEmptyEntries))
            {
                permissionname   = PermissionString.Substring(0, PermissionString.IndexOf(":"));
                permissionstring = PermissionString.Replace(permissionname + ":", "").Replace("}", "");
                foreach (string Perm in permissionstring.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries))
                {
                    perm = Perm;
                    Permission permission = new Permission();
                    permission.SiteId         = SiteId;
                    permission.EntityName     = EntityName;
                    permission.EntityId       = EntityId;
                    permission.PermissionName = permissionname;
                    permission.RoleId         = null;
                    permission.UserId         = null;
                    permission.IsAuthorized   = true;

                    if (perm.StartsWith("!"))
                    {
                        // deny permission
                        perm.Replace("!", "");
                        permission.IsAuthorized = false;
                    }
                    if (perm.StartsWith("[") && perm.EndsWith("]"))
                    {
                        // user id
                        perm = perm.Replace("[", "").Replace("]", "");
                        permission.UserId = int.Parse(perm);
                    }
                    else
                    {
                        // role name
                        Role role = roles.Where(item => item.Name == perm).SingleOrDefault();
                        if (role != null)
                        {
                            permission.RoleId = role.RoleId;
                        }
                    }
                    permissions.Add(permission);
                }
            }
            return(permissions);
        }