public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
        {
            eBuyContext db = new eBuyContext();

            var user = db.UserDetails.Where(d => d.UserEmail == context.UserName).FirstOrDefault();

            if (user != null && !string.IsNullOrEmpty(user.UserEmail) && !string.IsNullOrEmpty(user.UserPassword))
            {
                var identity = new ClaimsIdentity(context.Options.AuthenticationType);

                if (context.UserName == user.UserEmail && context.Password == user.UserPassword)
                {
                    identity.AddClaim(new Claim(ClaimTypes.Role, user.UserRole));
                    identity.AddClaim(new Claim("username", user.UserEmail));
                    identity.AddClaim(new Claim(ClaimTypes.Name, user.UserName));

                    var uid = new Dictionary <string, string>()
                    {
                        { "userid", user.UserId.ToString() }, { "role", user.UserRole.ToString() }
                    };

                    var ticket = new AuthenticationTicket(identity, new AuthenticationProperties(uid));

                    context.Validated(ticket);
                }
                else
                {
                    context.SetError("invalid_grant", "Username and Password Combination Provided is Incorrect!");
                    return;
                }
            }
        }