public override void RemoveUsersFromRoles(string[] usernames, string[] roleNames)
        {
            using (var db = new MembershipContext())
            {
                var strComparer = new StringEqualityComparer();

                UserUserRole[] userRoles = (from u in db.Users
                                            join ur in db.UserRoles on u.UserId equals ur.UserId
                                            join r in db.Roles on ur.RoleId equals r.RoleId
                                            where usernames.Contains(u.UserName, strComparer)
                                            && roleNames.Contains(r.RoleName, strComparer)
                                            select ur).ToArray();

                DbSet<UserUserRole> dbSet = db.Set<UserUserRole>();
                foreach (var uRole in userRoles)
                {
                    if (db.Entry(uRole).State == System.Data.EntityState.Detached)
                        dbSet.Attach(uRole);
                    dbSet.Remove(uRole);
                }

                if (userRoles.Length > 0) db.SaveChanges();
            }
        }
 public override string CreateUserAndAccount(string userName, string password, bool requireConfirmation, IDictionary<string, object> values)
 {
     var newUser = new User() { UserName = userName };
     newUser.EncryptedPassword = password.EncryptSha512(newUser.Salt);
     newUser.IsGoogleAuthenticatorEnabled = (bool)values["IsGoogleAuthenticatorEnabled"];
     newUser.TwoFactorSecret = TwoFactorSecretGenerator.GenerateSecretKey();
     newUser.CreationDate = newUser.LastLoginDate = DateTime.Now;
     using (var db = new MembershipContext())
     {
         db.Set<User>().Add(newUser);
         db.SaveChanges();
     }
     return newUser.UserId.ToString();
 }