internal string GetHashedUserPassword(int userId)
 {
     using (MySqlDatabaseWrapper dbConn = new MySqlDatabaseWrapper(GetConnectionString()))
     {
         var userPassword = dbConn.ExecuteQuerySingleRecord(string.Format("select password from {0} where userid=?;", _membershipTable), userId);
         if (userPassword != null)
         {
             return(userPassword[0].ToString());
         }
         return(null);
     }
 }
        internal int GetRoleId(string role)
        {
            using (MySqlDatabaseWrapper dbConn = new MySqlDatabaseWrapper(ConnectionString))
            {
                var roleid = dbConn.ExecuteQuerySingleRecord(string.Format("select roleid from {0} where rolename=?;", _rolesTable), role);
                if (roleid != null)
                {
                    return((int)role[0]);
                }

                return(0);
            }
        }
        private int GetUserIdFromPasswordResetToken(string token, bool checkExpirationDate = false)
        {
            using (MySqlDatabaseWrapper dbConn = new MySqlDatabaseWrapper(GetConnectionString()))
            {
                var user = dbConn.ExecuteQuerySingleRecord(string.Format("select userid from {0} where PasswordVerificationToken = ? {1};", _membershipTable, (checkExpirationDate ? "and PasswordVerificationTokenExpirationDate > now()" : "")), token);
                if (user != null)
                {
                    return((int)user["userid"]);
                }

                return(0);
            }
        }
        internal static int GetUserId(string userName, string connectionString, string userTableName, string userIdColumn, string userNameColumn)
        {
            using (MySqlDatabaseWrapper dbConn = new MySqlDatabaseWrapper(connectionString))
            {
                var user = dbConn.ExecuteQuerySingleRecord(string.Format("select {0} from {1} where {2} = ?;", userIdColumn, userTableName, userNameColumn), userName);
                if (user != null)
                {
                    return((int)user[userIdColumn]);
                }

                return(0);
            }
        }
 public override bool ConfirmAccount(string accountConfirmationToken)
 {
     IsValidOperation(true);
     using (MySqlDatabaseWrapper dbConn = new MySqlDatabaseWrapper(GetConnectionString()))
     {
         var token = dbConn.ExecuteQuerySingleRecord(string.Format("select userid, confirmationtoken from {0} where confirmationtoken=?", _membershipTable), accountConfirmationToken);
         if (token == null || (token != null && string.IsNullOrEmpty(token[1].ToString())))
         {
             return(false);
         }
         return(dbConn.ExecuteNonQuery(string.Format("update {0} set isconfirmed=1 where userid=?;", _membershipTable), (int)token[0]) > 0);
     }
 }
        public override int GetUserIdFromOAuth(string provider, string providerUserId)
        {
            IsValidOperation(true);
            using (MySqlDatabaseWrapper dbConn = new MySqlDatabaseWrapper(GetConnectionString()))
            {
                var user = dbConn.ExecuteQuerySingleRecord(string.Format("select userid from {0} where upper(provider) = ? and upper(provideruserid)=?;", _oauthMembershipTable), provider.ToUpper(), providerUserId.ToUpper());
                if (user != null)
                {
                    return((int)user["userid"]);
                }

                return(0);
            }
        }
        public override string CreateAccount(string userName, string password, bool requireConfirmationToken)
        {
            IsValidOperation(true);
            if (string.IsNullOrEmpty(userName))
            {
                NullArgumentException(userName);
            }
            if (string.IsNullOrEmpty(password))
            {
                NullArgumentException(password);
            }
            var hashedPass = HashPassword(password);

            if (hashedPass.Length > 128)
            {
                throw new ArgumentException(Resources.PasswordExceedsMaxLength, password);
            }

            using (MySqlDatabaseWrapper dbConn = new MySqlDatabaseWrapper(GetConnectionString()))
            {
                var userid = GetUserId(userName);
                if (userid <= 0)
                {
                    throw new InvalidOperationException(string.Format(Resources.UserNotFound, UserTableName));
                }
                if (dbConn.ExecuteQuerySingleRecord(string.Format("select userid from {0} where userid=?;", _membershipTable), userid) != null)
                {
                    throw new InvalidOperationException(string.Format(Resources.UserAlreadyExists, userName));
                }
                object token = DBNull.Value;
                if (requireConfirmationToken)
                {
                    token = GenerateToken();
                }

                string insertQuery = string.Format("insert into {0} (userid, createdate, confirmationtoken, isconfirmed, password, passwordchangeddate, passwordsalt) values(?,now(),?,?,?,now(),?)", _membershipTable);
                if (dbConn.ExecuteNonQuery(insertQuery, userid, token, !requireConfirmationToken, hashedPass, string.Empty) <= 0)
                {
                    throw new MembershipCreateUserException(MembershipCreateStatus.ProviderError);
                }
                return(token == DBNull.Value ? null : token.ToString());
            }
        }
 internal string GetHashedUserPassword(int userId)
 {
   using (MySqlDatabaseWrapper dbConn = new MySqlDatabaseWrapper(GetConnectionString()))
   {
     var userPassword = dbConn.ExecuteQuerySingleRecord(string.Format("select password from {0} where userid=?;", _membershipTable), userId);
     if (userPassword != null)
       return userPassword[0].ToString();
     return null;
   }
 }
    private int GetUserIdFromPasswordResetToken(string token, bool checkExpirationDate = false)
    {
      using (MySqlDatabaseWrapper dbConn = new MySqlDatabaseWrapper(GetConnectionString()))
      {
        var user = dbConn.ExecuteQuerySingleRecord(string.Format("select userid from {0} where PasswordVerificationToken = ? {1};", _membershipTable, (checkExpirationDate ? "and PasswordVerificationTokenExpirationDate > now()" : "")), token);
        if (user != null)
          return (int)user["userid"];

        return 0;
      }
    }
    public override int GetUserIdFromOAuth(string provider, string providerUserId)
    {
      IsValidOperation(true);
      using (MySqlDatabaseWrapper dbConn = new MySqlDatabaseWrapper(GetConnectionString()))
      {
        var user = dbConn.ExecuteQuerySingleRecord(string.Format("select userid from {0} where upper(provider) = ? and upper(provideruserid)=?;", _oauthMembershipTable), provider.ToUpper(), providerUserId.ToUpper());
        if (user != null)
          return (int)user["userid"];

        return 0;
      }
    }
    internal static int GetUserId(string userName, string connectionString, string userTableName, string userIdColumn, string userNameColumn)
    {
      using (MySqlDatabaseWrapper dbConn = new MySqlDatabaseWrapper(connectionString))
      {
        var user = dbConn.ExecuteQuerySingleRecord(string.Format("select {0} from {1} where {2} = ?;", userIdColumn, userTableName, userNameColumn), userName);
        if (user != null)
          return (int)user[userIdColumn];

        return 0;
      }
    }
    public override string CreateAccount(string userName, string password, bool requireConfirmationToken)
    {
      IsValidOperation(true);
      if (string.IsNullOrEmpty(userName))
        NullArgumentException(userName);
      if (string.IsNullOrEmpty(password))
        NullArgumentException(password);
      var hashedPass = HashPassword(password);
      if (hashedPass.Length > 128)
        throw new ArgumentException(Resources.PasswordExceedsMaxLength, password);

      using (MySqlDatabaseWrapper dbConn = new MySqlDatabaseWrapper(GetConnectionString()))
      {
        var userid = GetUserId(userName);
        if (userid <= 0)
        {
          throw new InvalidOperationException(string.Format(Resources.UserNotFound, UserTableName));
        }
        if (dbConn.ExecuteQuerySingleRecord(string.Format("select userid from {0} where userid=?;", _membershipTable), userid) != null)
        {
          throw new InvalidOperationException(string.Format(Resources.UserAlreadyExists, userName));
        }
        object token = DBNull.Value;
        if (requireConfirmationToken)
          token = GenerateToken();

        string insertQuery = string.Format("insert into {0} (userid, createdate, confirmationtoken, isconfirmed, password, passwordchangeddate, passwordsalt) values(?,now(),?,?,?,now(),?)", _membershipTable);
        if (dbConn.ExecuteNonQuery(insertQuery, userid, token, !requireConfirmationToken, hashedPass, string.Empty) <= 0)
        {
          throw new MembershipCreateUserException(MembershipCreateStatus.ProviderError);
        }
        return token == DBNull.Value ? null : token.ToString();
      }
    }
    public override bool ConfirmAccount(string userName, string accountConfirmationToken)
    {
      var userid = GetUserId(userName);
      if (userid <= 0)
        return false;

      using (MySqlDatabaseWrapper dbConn = new MySqlDatabaseWrapper(GetConnectionString()))
      {
        var token = dbConn.ExecuteQuerySingleRecord(string.Format("select userid, confirmationtoken from {0} where confirmationtoken=? and userid=?", _membershipTable), accountConfirmationToken, userid);
        if (token == null || (token != null && string.IsNullOrEmpty(token[1].ToString())))
        {
          return false;
        }
        return dbConn.ExecuteNonQuery(string.Format("update {0} set isconfirmed=1 where userid=?;", _membershipTable), userid) > 0;
      }
    }
    internal int GetRoleId(string role)
    {
      using (MySqlDatabaseWrapper dbConn = new MySqlDatabaseWrapper(GetConnectionString()))
      {
        var roleid = dbConn.ExecuteQuerySingleRecord(string.Format("select roleid from {0} where rolename=?;", _rolesTable), role);
        if (roleid != null)
          return (int)role[0];

        return 0;
      }
    }