Closed sudsy closed 8 years ago
I found a way to do this after digging through the source. My code is included below.
public static class SimpleIdentityManagerServiceExtensions
{
public static void ConfigureSimpleIdentityManagerService(this IdentityManagerServiceFactory factory, string connectionString)
{
factory.Register(new Registration<Context>(resolver => new Context(connectionString)));
factory.Register(new Registration<UserStore>());
factory.Register(new Registration<RoleStore>());
factory.Register(new Registration<UserManager>());
factory.Register(new Registration<RoleManager>());
factory.IdentityManagerService = new Registration<IIdentityManagerService, SimpleIdentityManagerService>();
}
}
public class SimpleIdentityManagerService : AspNetIdentityManagerService<User, string, Role, string>
{
public SimpleIdentityManagerService(UserManager userMgr, RoleManager roleMgr)
: base(userMgr, roleMgr)
{
}
public override Task<IdentityManagerMetadata> GetMetadataAsync()
{
return base.GetMetadataAsync().ContinueWith((metadataTask) =>
{
var metaData = metadataTask.Result;
var updateProperties = metaData.UserMetadata.UpdateProperties;
var newUpdateProperties = new List<PropertyMetadata>();
newUpdateProperties.Add(PropertyMetadata.FromFunctions<User, bool>("email_confirmed", GetConfirmed, SetConfirmed, name: "Confirmed", dataType: PropertyDataType.Boolean));
var combinedUpdateProperties = updateProperties.Concat(newUpdateProperties);
metaData.UserMetadata.UpdateProperties = combinedUpdateProperties;
return metaData;
});
}
public virtual bool GetConfirmed(User user)
{
return userManager.IsEmailConfirmed(user.Id);
}
public virtual IdentityManagerResult SetConfirmed(User user, bool value)
{
throw new Exception("Cannot set confirmed value");
}
}
Hi There,
It seems like I might be able to expose the EmailConfirmed Field with a tweak to metadata, but I can't seem to see how.
Are there any examples / guides that relate?
Regards,
Ben