diff --git a/docs/upgrades/upgrade_5.0.3-5.1.0.sql b/docs/upgrades/upgrade_5.0.3-5.1.0.sql
index 12aa17f74..7ec0f92ef 100644
--- a/docs/upgrades/upgrade_5.0.3-5.1.0.sql
+++ b/docs/upgrades/upgrade_5.0.3-5.1.0.sql
@@ -15,5 +15,7 @@ delete from international where languageId=2 and namespace='WebGUI' and internat
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (819,2,'WebGUI','kann selbst deaktivieren', 1043422108);
delete from international where languageId=2 and namespace='WebGUI' and internationalId=836;
insert into international (internationalId,languageId,namespace,message,lastUpdated) values (836,2,'WebGUI','Schnipsel sind Text-Elemente, die mehrfach auf Ihrer Seite genutzt werden k?nnen. Dinge wie Java-Scripts, Style Sheets, Flash Animationen oder einfach nur Slogans sind Beispiele hierf?r. Das beste daran ist, dass Sie ?nderungen, die zum Beispiel in einem Slogan oder Werbespruch durchgef?hrt werden m?ssen, an zentraler Stelle ?ndern k?nnen.
\r\nName
Vergeben Sie einen eindeutigen Namen, damit Sie das Schnipsel sp?ter schnell wiederfinden k?nnen.
\r\nIn welches Verzeichnis
In welchen Ordner m?chten Sie das Schnipsel speichern
\r\nSchnipsel
Geben Sie hier den Text ein oder noch einfacher: kopieren Sie den ben?tigten Text oder auch JavaScript-Code ?ber die Zwischenablage ein.', 1043421646);
+alter table groups add column ipFilter varchar(255);
+insert into international (internationalId,languageId,namespace,message,lastUpdated) values (857,1,'WebGUI','IP Address', 1043878310);
diff --git a/lib/WebGUI/Operation/Group.pm b/lib/WebGUI/Operation/Group.pm
index a8a0827d1..a80a52c4e 100644
--- a/lib/WebGUI/Operation/Group.pm
+++ b/lib/WebGUI/Operation/Group.pm
@@ -116,6 +116,11 @@ sub www_editGroup {
} else {
$f->hidden("karmaThreshold",$group{karmaThreshold});
}
+ $f->text(
+ -name=>"ipFilter",
+ -value=>$group{ipFilter},
+ -label=>WebGUI::International::get(857)
+ );
$f->submit;
$output .= $f->print;
return _submenu($output);
@@ -132,7 +137,8 @@ sub www_editGroupSave {
description=".quote($session{form}{description}).",
expireAfter='".WebGUI::DateTime::intervalToSeconds($session{form}{expireAfter_interval},
$session{form}{expireAfter_units})."',
- karmaThreshold='$session{form}{karmaThreshold}'
+ karmaThreshold='$session{form}{karmaThreshold}',
+ ipFilter=".quote($session{form}{ipFilter})."
where groupId=".$session{form}{gid});
return www_listGroups();
}
diff --git a/lib/WebGUI/Privilege.pm b/lib/WebGUI/Privilege.pm
index 0cf281a96..6fc8e8373 100644
--- a/lib/WebGUI/Privilege.pm
+++ b/lib/WebGUI/Privilege.pm
@@ -242,7 +242,17 @@ sub isInGroup {
}
### Get data for auxillary checks.
tie %group, 'Tie::CPHash';
- %group = WebGUI::SQL->quickHash("select karmaThreshold from groups where groupId='$gid'");
+ %group = WebGUI::SQL->quickHash("select karmaThreshold,ipFilter from groups where groupId='$gid'");
+ ### Check IP Address
+ if ($group{ipFilter} ne "") {
+ my @ips = split(";",$group{ipFilter});
+ foreach my $ip (@ips) {
+ if ($session{env}{REMOTE_ADDR} =~ /^$ip/) {
+ $session{isInGroup}{$gid} = 1;
+ return 1;
+ }
+ }
+ }
### Check karma levels.
if ($session{setting}{useKarma}) {
tie %user, 'Tie::CPHash';