public override async Task <ClaimsIdentity> CreateIdentityAsync(PulseIdentityUser user, string authenticationType)
        {
            IList <Claim> claims = new List <Claim>();

            PulseUserManager userManager = ResolverFactory.GetService <PulseUserManager>();

            IClientService clientService = ResolverFactory.GetService <IClientService>();

            var roleName = userManager.GetRoles(user.Id).FirstOrDefault();

            var client = await clientService.FindByClientIdAsync(user.ClientId);

            claims.Add(new Claim(ClaimTypes.NameIdentifier, user.Id, null, ClaimsIdentity.DefaultIssuer, "Provider"));
            claims.Add(new Claim(ClaimTypes.Name, user.UserName, null, ClaimsIdentity.DefaultIssuer, "Provider"));
            claims.Add(new Claim("ClientId", user.ClientId, null, ClaimsIdentity.DefaultIssuer, "Provider"));
            claims.Add(new Claim("AllowedGrant", Enum.GetName(typeof(OAuthGrant), client.AllowedGrant), null, ClaimsIdentity.DefaultIssuer, "Provider"));
            claims.Add(new Claim(ClaimTypes.Role, roleName, null, ClaimsIdentity.DefaultIssuer, "Provider"));

            var claimsIdentity = new ClaimsIdentity(claims, authenticationType);

            return(await Task.FromResult(claimsIdentity));
        }
        public static PulseUserManager Create(IdentityFactoryOptions <PulseUserManager> options, IOwinContext context)
        {
            var identityDbContext = context.Get <PulseContext>();
            var userManager       = new PulseUserManager(new PulseUserStore(identityDbContext));

            userManager.UserValidator = new UserValidator <PulseIdentityUser>(userManager)
            {
                AllowOnlyAlphanumericUserNames = false,
                RequireUniqueEmail             = false,
            };

            userManager.PasswordValidator = new PasswordValidator
            {
                RequiredLength          = 1,
                RequireNonLetterOrDigit = false,
                RequireDigit            = false,
                RequireLowercase        = false,
                RequireUppercase        = false,
            };

            return(userManager);
        }