Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Email cannot be null or empty while creating new user?

I am using IdentityServer 3 for authentication. I am storing users in SQL DB using asp.net identity framework. IndentityServer team has provided simple IdentityManager.AspNetIdentity library for administrators to manage users.

I followed the video here and configured my application.

I have my own ApplicationUser and ApplicationUserManager class as below

public class ApplicationUser : Microsoft.AspNet.Identity.EntityFramework.IdentityUser
{
}

public class ApplicationUserManager : Microsoft.AspNet.Identity.UserManager<ApplicationUser, string>
{
    public ApplicationUserManager(ApplicationUserStore store, IDataProtectionProvider dataProtectionProvider)
        : base(store)
    {
        // Configure validation logic for usernames
        UserValidator = new UserValidator<ApplicationUser>(this)
        {
            AllowOnlyAlphanumericUserNames = false,
            RequireUniqueEmail = true                
        };

        // Configure validation logic for passwords
        PasswordValidator = new PasswordValidator
        {
            RequiredLength = 6,
            RequireNonLetterOrDigit = true,
            RequireDigit = true,
            RequireLowercase = true,
            RequireUppercase = true,
        };

        // Configure user lockout defaults
        UserLockoutEnabledByDefault = true;
        DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(5);
        MaxFailedAccessAttemptsBeforeLockout = 5;

        EmailService = new EmailService();
        SmsService = new SmsService();

        if (dataProtectionProvider != null)
        {
            UserTokenProvider =
                new DataProtectorTokenProvider<ApplicationUser>(dataProtectionProvider.Create("UserToken"));
        }
    }       
}

When i try to create user, i get error

email cannot be null or empty.

enter image description here

I can get rid of this error by setting RequireUniqueEmail to false in ApplicationUserManager. However that is not my requirement. I want to keep RequireUniqueEmail to true

Question
How do i get Email address field to appear on create new user page. Note that ApplicationUser is derived from IdentityUser that already has Email property. So i am not sure why its not appearing on create new user page?

Update 1
So i looked at the code for new user in github, however its developed in angular. I'm not familiar with angular syntax :( and how the model is passed to view. I am not sure what do i need to do in consumer application to enable email field on new user screen.

like image 662
LP13 Avatar asked Oct 29 '25 12:10

LP13


1 Answers

I partially solved my problem

The create user page shows only required property of IndetityUser ( in my case it ApplicationUser that is derived from IdentityUser). The Email property is in IdentityUser class but its virtual. So i can simply override the property in ApplicationUser and add required attribute

public class ApplicationUser : IdentityUser
{
    [Required]
    public override string Email { get; set; }
}

This will add email field on Create User Page as i want. However when i edit user it shows email field twice. ( for me its okay for time being since this functionality is internal only)

like image 137
LP13 Avatar answered Oct 31 '25 04:10

LP13



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!