示例#1
0
        /// <summary>
        /// Gets the privileges from raw data.
        /// </summary>
        /// <param name="rawdata">The rawdata.</param>
        /// <returns></returns>
        public static AdminPrivileges GetPrivilegesFromRawData(RawAdminPrivileges rawdata)
        {
            AdminPrivileges privileges = new AdminPrivileges();

            for (int i = 0; i < rawdata.lSections.Count; ++i)
            {
                foreach (FieldInfo fi in typeof(AdminPrivileges).GetFields())
                {
                    Reflection.DescriptionAttribute att =
                        Attribute.GetCustomAttribute(fi, typeof(Reflection.DescriptionAttribute)) as
                        Reflection.DescriptionAttribute;

                    if (att != null && att.Description == rawdata.lSections[i])
                    {
                        eAccess readAccess = rawdata.lReadPermissions[i] ? eAccess.Read : eAccess.None;
                        eAccess writeAccess = rawdata.lWritePermissions[i] ? eAccess.Write : eAccess.None;

                        fi.SetValue(privileges, readAccess | writeAccess);
                        break;
                    }
                }
            }

            return privileges;
        }
示例#2
0
        /// <summary>
        /// Gets the raw data from privileges.
        /// </summary>
        /// <param name="privileges">The privileges.</param>
        /// <returns></returns>
        public static RawAdminPrivileges GetRawDataFromPrivileges(AdminPrivileges privileges)
        {
            RawAdminPrivileges rawdata = new RawAdminPrivileges();

            FieldInfo[] fis = privileges.GetType().GetFields();
            foreach (FieldInfo fi in fis)
            {
                if (fi.FieldType == typeof(eAccess))
                {
                    Reflection.DescriptionAttribute att =
                        Attribute.GetCustomAttribute(fi, typeof(Reflection.DescriptionAttribute)) as
                        Reflection.DescriptionAttribute;
                    eAccess access = (eAccess)fi.GetValue(privileges);

                    if (att != null)
                    {
                        rawdata.lSections.Add(att.Description);
                        rawdata.lReadPermissions.Add((access & eAccess.Read) == eAccess.Read);
                        rawdata.lWritePermissions.Add((access & eAccess.Write) == eAccess.Write);
                    }
                    else continue;
                }
            }

            return rawdata;
        }