Пример #1
0
        /// <summary>
        /// Gets the full access.
        /// </summary>
        /// <returns>AdminPrivileges with full access.</returns>
        private static AdminPrivileges GetFullAccess()
        {
            AdminPrivileges privileges = new AdminPrivileges();

            foreach (FieldInfo fi in typeof(AdminPrivileges).GetFields())
            {
                if (fi.FieldType == typeof(eAccess))
                    fi.SetValue(privileges, eAccess.Read | eAccess.Write);
            }

            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;
        }
Пример #3
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;
        }
Пример #4
0
        /// <summary>
        /// Loads admin account data from DB.
        /// </summary>
        /// <exception cref="NotFoundException">The specified account does not exist.</exception>
        public void Load()
        {
            using (SqlConnection conn = Config.DB.Open())
            {
                SqlDataReader reader = SqlHelper.ExecuteReader(conn, "LoadAdmin", username);

                if (reader.Read())
                {
                    username = (string)reader["Username"];
                    password = (string)reader["Password"];
                    lastSessionID = (string)reader["LastSessionID"];
                    lastlogin = (DateTime)reader["LastLogin"];
                    try
                    {
                        if (username == Config.Users.SystemUsername)
                        {
                            privileges = GetFullAccess();
                        }
                        else
                            privileges = Misc.FromXml<AdminPrivileges>((string)reader["Privileges"]);
                    }
                    catch
                    {
                        //no privileges found ... default will be used instead
                    }
                }
                else
                {
                    throw new NotFoundException
                        (Lang.Trans("The specified account does not exist!"));
                }
            }
        }