60 if ( $value ===
'' ) {
61 return parent::validate( $value, $alldata );
68 if ( $this->mParams[
'exists'] && !(
69 $user->isRegistered() &&
71 !( $user->isHidden() && !( $this->mParent && $this->mParent->getUser()->isAllowed(
'hideuser' ) ) )
77 $excludeNamed = $this->mParams[
'excludenamed'] ??
null;
78 $excludeTemp = $this->mParams[
'excludetemp'] ??
null;
79 if ( ( $excludeTemp && $user->isTemp() ) || ( $excludeNamed && $user->isNamed() ) ) {
86 if ( $this->mParams[
'external'] && ExternalUserNames::isExternal( $value ) ) {
90 if ( $this->mParams[
'ipallowed'] ) {
91 $b = IPUtils::RE_IP_BYTE;
92 if ( IPUtils::isValid( $value ) ) {
94 } elseif ( $this->mParams[
'usemodwiki-ipallowed'] && preg_match(
"/^$b\.$b\.$b\.xxx$/", $value ) ) {
99 if ( $this->mParams[
'iprange'] ) {
101 if ( $rangeError ===
true ) {
103 } elseif ( $rangeError !==
false ) {
112 return parent::validate( $value, $alldata );
120 $cidrIPRanges = $this->mParams[
'iprangelimits'];
122 if ( !IPUtils::isValidRange( $value ) ) {
126 [ $ip, $range ] = explode(
'/', $value, 2 );
129 ( IPUtils::isIPv4( $ip ) && $cidrIPRanges[
'IPv4'] == 32 ) ||
130 ( IPUtils::isIPv6( $ip ) && $cidrIPRanges[
'IPv6'] == 128 )
133 return $this->
msg(
'ip_range_toolow' );
137 ( IPUtils::isIPv4( $ip ) && $range > 32 ) ||
138 ( IPUtils::isIPv6( $ip ) && $range > 128 )
141 return $this->
msg(
'ip_range_invalid' );
144 if ( IPUtils::isIPv4( $ip ) && $range < $cidrIPRanges[
'IPv4'] ) {
145 return $this->
msg(
'ip_range_exceeded', $cidrIPRanges[
'IPv4'] );
148 if ( IPUtils::isIPv6( $ip ) && $range < $cidrIPRanges[
'IPv6'] ) {
149 return $this->
msg(
'ip_range_exceeded', $cidrIPRanges[
'IPv6'] );