Web API Login using phone number or email id.

May 25 2021 6:10 AM
Hi,
 
         I ant to login using email or phone number. I changed that but I got errors in ASPNetUsers Email, phonenumber and PasswordHash does not contain in definition of Email,Phonenumber and PasswordHash.Here is my code.
 
 
  {
           Entities dbObj = new Entities();

            var identity = new ClaimsIdentity(context.Options.AuthenticationType);
            string Email = context.OwinContext.Get<string>("Email");
            string PhoneNumber = context.OwinContext.Get<string>("PhoneNumber");
            var userManager = context.OwinContext.GetUserManager<ApplicationUserManager>();
            if (Email != null)
            {
                var user = dbObj.AspNetUsers.Where(x => x.Email == Email).SingleOrDefault(); //Got the error here
                if (user != null)
                {
                    var psd = user.PasswordHash;
                    PasswordVerificationResult passresult = userManager.PasswordHasher.VerifyHashedPassword(user.PasswordHash, context.Password);

                    if (dbObj.AspNetUsers.Any(x => x.PasswordHash == psd) && passresult.ToString() == "Success") //here
                    {

                        identity.AddClaim(new Claim(ClaimTypes.Role, "admin"));
                        identity.AddClaim(new Claim("username", "admin"));
                        identity.AddClaim(new Claim(ClaimTypes.Name, "Hi Admin"));
                        context.Validated(identity);
                    }
                }
                else
                {
                    context.SetError("invalid_grant", "Email and password is incorrect");
                    return;
                }

            }
            else if (PhoneNumber != null)
            {
                var user = dbObj.AspNetUsers.Where(y => y.PhoneNumber == PhoneNumber).FirstOrDefault(); //and here
                if (user != null)
                {
                    var psd = user.PasswordHash;
                    PasswordVerificationResult passresult = userManager.PasswordHasher.VerifyHashedPassword(user.PasswordHash, context.Password);

                    if (dbObj.AspNetUsers.Any(x => x.PasswordHash == psd) && passresult.ToString() == "Success")
                    {
                        identity.AddClaim(new Claim(ClaimTypes.Role, "user"));
                        identity.AddClaim(new Claim("username", "user"));
                        identity.AddClaim(new Claim(ClaimTypes.Name, "Hi User"));
                        context.Validated(identity);
                    }
 
 
Thanks in Advance.

Answers (2)