/// <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; }
/// <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; }