Problem with custom membership using MembershipDataProvider

Posted by Community Admin on 04-Aug-2018 12:30

Problem with custom membership using MembershipDataProvider

All Replies

Posted by Community Admin on 01-Oct-2012 00:00

Hello,
I am using sitefinity 5.1.3450 , and I created an membership provider inheriting from Telerik.Sitefinity.Data.MembershipDataProvider , I followed instructions in another forum thread from one of telerik's staff and did what he stated as nececary :
1.Implemented all abstract methods ,
2.Registered provider through backend.
This provided enough for sitefinity to know about my provider.
But the methods CreateUser(string) and CreateUser(Guid,string) didn't provide enough for registration in my provider so I overrided CreateUser(string,string,string,string,string,bool,object,out MembershipCreateStatus) , UserExists(string) , EmailExists(string) and successfuly registrated users through the backend(they were created in my base) but a number of problems occured : 
1. You cannot delete users.
2. You cannot assign users to Roles.
3. You cannot edit user profiles ( it does not fill any of the information even createtime )

Code for CreateUser(lots of arguments) and my ManagerInfo property
( the this.GetManagerInfo(typeof(Telerik.Sitefinity.Security.UserManager).FullName, this.Name) way of getting manager info throws an exception about an decorator )

private Telerik.Sitefinity.Model.ManagerInfo managerInfo;
public Telerik.Sitefinity.Model.ManagerInfo ManagerInfo
    get
    
        if (this.managerInfo == null)
        
            this.managerInfo = new Telerik.Sitefinity.Model.ManagerInfo()
            
                ApplicationName = this.ApplicationName,
                ManagerType = typeof(Telerik.Sitefinity.Security.UserManager).FullName,
                ProviderName = this.Name,
                Id = Guid.NewGuid()
            ;
        
        return this.managerInfo;
    
 
public override User CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out System.Web.Security.MembershipCreateStatus status)
    User result;
    bool create = true;
    string notImplementedValidQuestion = "This question is valid";
    string notImplementedValidAnswer = "This answer is valid";
    if (!ValidateParameters(ref username, ref password, ref email, ref notImplementedValidQuestion, ref notImplementedValidAnswer, ref providerUserKey, out status))
    
        create = false;
    
 
    if (!create)
    
        result = null;
    
    else
    
        CustomUser meCustom = new CustomUser()
        
            ApplicationName=this.ApplicationName,
            Id = (Guid)providerUserKey,
            Password = this.EncodePassword(password, string.Empty, this.PasswordFormat),
            Email = email,
            PasswordAnswer = passwordAnswer,
            IsApproved = isApproved,
        ;
        meCustom.SetPasswordQuestion(passwordQuestion);
        meCustom.SetUserName(username);
        meCustom.SetCreationDate(DateTime.Now);
        meCustom.SetIsLockedOut(false);
        status = MembershipCreateStatus.Success;
        result = store.Save(meCustom);
        result.ManagerInfo = managerInfo;
        ((IDataItem)result).Provider = this;
 
 
    
     
    return result;

Additional Info:

The methods DeleteItem(object) and Delete(User) are not entered.No exception is thrown or written in the log when the user is not deleted.

I get the following error in the Error.log when i create an user(NOTE! the user is still created in my database):

10/01/2012 14:45:59
Type : Telerik.Sitefinity.Utilities.MS.ServiceModel.Web.WebProtocolException, Telerik.Sitefinity.Utilities, Version=5.1.3450.0, Culture=neutral, PublicKeyToken=b28c218413bdf563
Message : ERROR: Item could not be saved.
Source : Telerik.Sitefinity
Help link : 
StatusCode : InternalServerError
StatusDescription : ERROR: Item could not be saved.
IsDetailXhtml : True
Data : System.Collections.ListDictionaryInternal
TargetSite : Telerik.Sitefinity.Security.Web.Services.WcfMembershipUser SaveUserInternal(Telerik.Sitefinity.Security.Web.Services.WcfMembershipUser, System.Guid, System.String, Boolean, Boolean)
detailWriterInstance : Telerik.Sitefinity.Utilities.MS.ServiceModel.Web.WebProtocolException+StringDetailWriter
Stack Trace :    at Telerik.Sitefinity.Security.Web.Services.Users.SaveUserInternal(WcfMembershipUser user, Guid userId, String providerName, Boolean update, Boolean updateRoles)
   at Telerik.Sitefinity.Security.Web.Services.Users.CreateUser(WcfMembershipUser user, String userId, String provider)
   at SyncInvokeCreateUser(Object , Object[] , Object[] )
   at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
   at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)


Additional Info:


MachineName : (hidden)
TimeStamp : 1.10.2012 г. 11:45:59 ч.
FullName : Telerik.Sitefinity.Utilities, Version=5.1.3450.0, Culture=neutral, PublicKeyToken=b28c218413bdf563
AppDomainName : a6f13a54-6-129935649858876839
ThreadIdentity : 
WindowsIdentity : (hidden)
Requested URL : localhost:60876/.../
Category: ErrorLog
Priority: 0
EventId: 90000
Severity: Error
Title:Enterprise Library Exception Handling
Machine: (hidden)
App Domain: a6f13a54-6-129935649858876839
ProcessId: 5044
Process Name: C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0\WebDev.WebServer40.exe
Thread Name: 
Win32 ThreadId:2996
Extended Properties: 

Posted by Community Admin on 04-Oct-2012 00:00

Hi Mihail,

The error "Item could not be saved" is a pretty general. The users service through an error but we can not find which is the problematic aria from the log file you have sent us. Would it be possible for you to send us your Sitefinity project and the provider's database in the support ticket you have opened? We will connect the project to our source code, make a deep investigation and find what is causing the problem.

Regards,
Stefani Tacheva
the Telerik team

Do you want to have your say in the Sitefinity development roadmap? Do you want to know when a feature you requested is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items

This thread is closed