diff --git a/smradius/modules/userdb/mod_userdb_sql.pm b/smradius/modules/userdb/mod_userdb_sql.pm
index 8d3b764cd2c1b744a548310bff008ff659d7fe5e..e7ea3690f0a37d9dbee00235e250c0b5664dd443 100644
--- a/smradius/modules/userdb/mod_userdb_sql.pm
+++ b/smradius/modules/userdb/mod_userdb_sql.pm
@@ -68,7 +68,7 @@ sub init
 	# Default configs...
 	$config->{'userdb_find_query'} = '
 		SELECT
-			ID
+			ID, Disabled
 		FROM
 			@TP@users
 		WHERE
@@ -172,6 +172,13 @@ sub find
 	# Grab record data
 	my $row = $sth->fetchrow_hashref();
 
+	# Dont use disabled user
+	my $res = isBoolean($row->{'disabled'});
+	if ($res) {
+		$server->log(LOG_DEBUG,"[MOD_USERDB_SQL] User '".$user->{'Username'}."' is disabled");
+		return MOD_RES_SKIP;
+	}
+
 	DBFreeRes($sth);
 
 	return (MOD_RES_ACK,$row);
diff --git a/smradius/util.pm b/smradius/util.pm
index ad9e528d6edfa85ce827eb6c267edc44ed63d5de..189a3344cc4ca81ca827502e48fa90e714f08084 100644
--- a/smradius/util.pm
+++ b/smradius/util.pm
@@ -30,6 +30,7 @@ our (@ISA,@EXPORT);
 @EXPORT = qw(
 	niceUndef
 	templateReplace
+	isBoolean
 );
 
 
@@ -80,6 +81,38 @@ sub templateReplace
 }
 
 
+## @fn isBoolean($var)
+# Check if a variable is boolean
+#
+# @param var Variable to check
+#
+# @return 1, 0 or undef
+sub isBoolean
+{
+	my $var = shift;
+
+
+	# Check if we're defined
+	if (!defined($var)) {
+		return undef;
+	}
+
+	# Nuke whitespaces
+	$var =~ s/\s//g;
+
+	# Allow true, on, set, enabled, 1, false, off, unset, disabled, 0
+	if ($var =~ /^(?:true|on|set|enabled|1)$/i) {
+		return 1;
+	}
+	if ($var =~ /^(?:false|off|unset|disabled|0)$/i) {
+		return 0;
+	}
+
+	# Invalid or unknown
+	return undef;
+}
+
+
 
 1;
 # vim: ts=4
diff --git a/smradiusd.conf b/smradiusd.conf
index 648005fbaf33145227899fb73c1f20bca2bb0dca..a9d482d53dbbe66ad96992fd5cfea629f3d99e37 100644
--- a/smradiusd.conf
+++ b/smradiusd.conf
@@ -387,7 +387,7 @@ EOT
 
 userdb_find_query=<<EOT
 	SELECT
-		ID
+		ID, Disabled
 	FROM
 		@TP@users
 	WHERE