コード例 #1
0
        public Dictionary <string, object> GetAllPropertiesForCurrentUser(bool authenticatedUserOnly)
        {
            ApplicationServiceHelper.EnsureProfileServiceEnabled();
            if (authenticatedUserOnly)
            {
                ApplicationServiceHelper.EnsureAuthenticated(HttpContext.Current);
            }

            Dictionary <string, object> retDict = new Dictionary <string, object>();

            try {
                ProfileBase pb = GetProfileForCurrentUser(authenticatedUserOnly);
                if (pb == null)
                {
                    return(null);
                }

                Dictionary <string, object> allowedGet = ApplicationServiceHelper.ProfileAllowedGet;
                if (allowedGet == null || allowedGet.Count == 0)
                {
                    // there are no readable properties
                    return(retDict);
                }
                foreach (KeyValuePair <string, object> entry in allowedGet)
                {
                    string propertyName         = entry.Key;
                    SettingsPropertyValue value = GetPropertyValue(pb, propertyName);
                    if (value != null)
                    {
                        retDict.Add(propertyName, value.PropertyValue);
                        value.IsDirty = false;
                    }
                }
            }
            catch (Exception e) {
                LogException(e);
                throw;
            }
            return(retDict);
        }
コード例 #2
0
        public Dictionary <string, object> GetPropertiesForCurrentUser(IEnumerable <string> properties, bool authenticatedUserOnly)
        {
            if (properties == null)
            {
                throw new ArgumentNullException("properties");
            }

            ApplicationServiceHelper.EnsureProfileServiceEnabled();
            if (authenticatedUserOnly)
            {
                ApplicationServiceHelper.EnsureAuthenticated(HttpContext.Current);
            }


            Dictionary <string, object> retDict = new Dictionary <string, object>();
            ProfileBase pb = null;

            try {
                pb = GetProfileForCurrentUser(authenticatedUserOnly);
            }
            catch (Exception e) {
                LogException(e);
                throw;
            }
            if (pb == null)
            {
                return(null);
            }

            Dictionary <string, object> allowedGet = ApplicationServiceHelper.ProfileAllowedGet;

            if (allowedGet == null || allowedGet.Count == 0)
            {
                // there are no readable properties
                return(retDict);
            }
            foreach (string property in properties)
            {
                if (property == null)
                {
                    throw new ArgumentNullException("properties");
                }

                if (allowedGet.ContainsKey(property))
                {
                    try {
                        SettingsPropertyValue value = GetPropertyValue(pb, property);
                        if (value != null)
                        {
                            retDict.Add(property, value.PropertyValue);
                            value.IsDirty = false;
                        }
                    }
                    catch (Exception e) {
                        LogException(e);
                        throw;
                    }
                }
            }
            return(retDict);
        }
コード例 #3
0
        public Collection <string> SetPropertiesForCurrentUser(IDictionary <string, object> values, bool authenticatedUserOnly)
        {
            if (values == null)
            {
                throw new ArgumentNullException("values");
            }

            ApplicationServiceHelper.EnsureProfileServiceEnabled();

            if (authenticatedUserOnly)
            {
                ApplicationServiceHelper.EnsureAuthenticated(HttpContext.Current);
            }

            Collection <string> sc = new Collection <string>();

            try {
                ValidatingPropertiesEventArgs vp = new ValidatingPropertiesEventArgs(values);
                OnValidatingProperties(vp);

                Dictionary <string, object> allowedSet = ApplicationServiceHelper.ProfileAllowedSet;
                ProfileBase pb = GetProfileForCurrentUser(authenticatedUserOnly);
                foreach (KeyValuePair <string, object> kvp in values)
                {
                    string propertyName = kvp.Key;

                    if (pb == null)
                    {
                        sc.Add(propertyName);
                        continue;
                    }
                    if (vp.FailedProperties.Contains(propertyName))
                    {
                        sc.Add(propertyName);
                        continue;
                    }
                    if (allowedSet == null)
                    {
                        sc.Add(propertyName);
                        continue;
                    }
                    if (!allowedSet.ContainsKey(propertyName))
                    {
                        sc.Add(propertyName);
                        continue;
                    }

                    SettingsProperty settingProperty = ProfileBase.Properties[propertyName];
                    if (settingProperty == null)
                    {
                        // property not found
                        sc.Add(propertyName);
                        continue;
                    }
                    if (settingProperty.IsReadOnly || (pb.IsAnonymous && !(bool)settingProperty.Attributes["AllowAnonymous"]))
                    {
                        // property is readonly, or the profile is anonymous and the property isn't enabled for anonymous access
                        sc.Add(propertyName);
                        continue;
                    }

                    SettingsPropertyValue value = GetPropertyValue(pb, kvp.Key);
                    if (value == null)   // property not found
                    {
                        sc.Add(propertyName);
                        continue;
                    }
                    else
                    {
                        try {
                            pb[propertyName] = kvp.Value;
                        }
                        catch (System.Configuration.Provider.ProviderException) {
                            // provider specific error
                            sc.Add(propertyName);
                        }
                        catch (System.Configuration.SettingsPropertyNotFoundException) {
                            sc.Add(propertyName);
                        }
                        catch (System.Configuration.SettingsPropertyWrongTypeException) {
                            sc.Add(propertyName);
                        }
                    }
                }
                pb.Save();
            }
            catch (Exception e) {
                LogException(e);
                throw;
            }
            return(sc);
        }