Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • GLindqvist 13 posts 13 karma points
    Feb 24, 2011 @ 09:56
    GLindqvist
    0

    Anonymous Profile with Membership via Usercontrol in Umbraco 4

     

    Need help with enabling Anonymous Profiles in Umbrco. We are using the member section in Umbraco for submitted form data via a Usercontrol.

    In a normal ASP.NET project I can add ProfileMigrateEventArgs (via Global.asax) event to migrate the anonymous user data to a authenticated user.

    Is this possible even in Umbraco? 

    I have used Aaron blog post about Members Profile to add custom propertie: http://www.aaron-powell.com/umbraco-members-profiles

    Code:

     

    using System;
    using System.Web;
    using System.Web.Profile;
    using System.Web.Security;
    
    namespace PortalPlus.Umbraco.Core
    {
        public class PersonalizationModule : IHttpModule
        {
    
            public PersonalizationModule()
            {
            }
    
            public MemberProfile Profile
            {
                get
                {
                    return (MemberProfile)HttpContext.Current.Profile;
                }
            }
    
            private bool IsNewProfile()
            {
                return (Profile.LastActivityDate == DateTime.MinValue && Profile.LastUpdatedDate == DateTime.MinValue);
            }
    
            void ProfileModule_MigrateAnonymous(object sender, ProfileMigrateEventArgs e)
            {
                if (IsNewProfile())
                {
                    MemberProfile anonProfile = Profile.GetUserProfile(e.AnonymousID);
                    Profile.Namn = anonProfile.Namn;
                    Profile.ForetagKommun = anonProfile.ForetagKommun;
                    Profile.ForvaltningKontor = anonProfile.ForvaltningKontor;
    
                    ProfileManager.DeleteProfile(e.AnonymousID);
                    AnonymousIdentificationModule.ClearAnonymousIdentifier();
                }
            }
    
            // In the Init function, register for HttpApplication 
            // events by adding your handlers.
            public void Init(HttpApplication application)
            {
                for (var i = 0; i < application.Modules.Count; i++)
                {
                    var profileModule = application.Modules[i] as ProfileModule;
    
                    if (profileModule != null)
                    {
                        Log.LogResult(profileModule.GetType().FullName);
                        profileModule.MigrateAnonymous += ProfileModule_MigrateAnonymous;
                    }
                }
            }
    
            public void Dispose()
            {
            }
        }
    }

     

    Handling the custom properties:

     

     public class MemberProfile : ProfileBase
        {
            public MemberProfile GetUserProfile(string username)
            {
                return Create(username) as MemberProfile;
            }
    
            public static MemberProfile GetUserProfile()
            {
                return Create(Membership.GetUser().UserName) as MemberProfile;
            }
    
            [SettingsAllowAnonymous(true)]
            public string AuthGuid
            {
                get
                {
                    var o = GetPropertyValue("auth_guid");
                    if (o == DBNull.Value)
                    {
                        return string.Empty;
                    }
                    return (string)o;
                }
                set
                {
                    SetPropertyValue("auth_guid"value);
                    Save();
                }
            }
    
            [SettingsAllowAnonymous(true)]
            public string Namn
            {
                get
                {
                    var o = GetPropertyValue("namn");
                    if (o == DBNull.Value)
                    {
                        return string.Empty;
                    }
                    return (string)o;
                }
                set
                {
                    SetPropertyValue("namn"value);
                    Save();
                }
            } }

     

    Finally how I trying to save the data:

                    try
                    {
                        var profile = (MemberProfile) System.Web.Profile.ProfileBase.Create(Guid.NewGuid().ToString());
                        profile.Namn = tbNamn.Text;
                        profile.ForetagKommun = tbForetagKommun.Text;
                        profile.ForvaltningKontor = tbForvaltningKontor.Text;
                        profile.Save();
                    }
                    catch(Exception ex)
                    {
                        Log.LogResult(ex.ToString());
                    }

  • Dimitris Tsoukakis 33 posts 59 karma points
    Jun 03, 2011 @ 12:24
    Dimitris Tsoukakis
    0

    Hi, 

    did you found a workaround for this?

    I have the same problem.

  • This forum is in read-only mode while we transition to the new forum.

    You can continue this topic on the new forum by tapping the "Continue discussion" link below.

Please Sign in or register to post replies