Added expiration overrides for groupings imported through the user importer.
This commit is contained in:
parent
50a5561f64
commit
f1067a0d8f
4 changed files with 58 additions and 10 deletions
|
|
@ -407,7 +407,7 @@ An integer which represents the amount of time for the interval.
|
||||||
|
|
||||||
=item units
|
=item units
|
||||||
|
|
||||||
A string which represents the units of the interval. The string must be 'years', 'months', 'days', 'hours', 'minutes', or 'seconds'.
|
A string which represents the units of the interval. The string must be 'years', 'months', 'weeks', 'days', 'hours', 'minutes', or 'seconds'.
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,7 @@ sub addGroupsToGroups {
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
=head2 addUsersToGroups ( users, groups )
|
=head2 addUsersToGroups ( users, groups [, expireOffset ] )
|
||||||
|
|
||||||
Adds users to the specified groups.
|
Adds users to the specified groups.
|
||||||
|
|
||||||
|
|
@ -97,13 +97,22 @@ An array reference containing a list of users.
|
||||||
|
|
||||||
An array reference containing a list of groups.
|
An array reference containing a list of groups.
|
||||||
|
|
||||||
|
=item expireOffset
|
||||||
|
|
||||||
|
An override for the default offset of the grouping. Specified in seconds.
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
sub addUsersToGroups {
|
sub addUsersToGroups {
|
||||||
foreach my $gid (@{$_[1]}) {
|
foreach my $gid (@{$_[1]}) {
|
||||||
my ($expireOffset) = WebGUI::SQL->quickArray("select expireOffset from groups where groupId=$gid");
|
my $expireOffset;
|
||||||
|
if ($_[2]) {
|
||||||
|
$expireOffset = $_[2];
|
||||||
|
} else {
|
||||||
|
($expireOffset) = WebGUI::SQL->quickArray("select expireOffset from groups where groupId=$gid");
|
||||||
|
}
|
||||||
foreach my $uid (@{$_[0]}) {
|
foreach my $uid (@{$_[0]}) {
|
||||||
my ($isIn) = WebGUI::SQL->quickArray("select count(*) from groupings where groupId=$gid and userId=$uid");
|
my ($isIn) = WebGUI::SQL->quickArray("select count(*) from groupings where groupId=$gid and userId=$uid");
|
||||||
unless ($isIn) {
|
unless ($isIn) {
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ sub _create {
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
=head2 addToGroups ( groups )
|
=head2 addToGroups ( groups [, expireOffset ] )
|
||||||
|
|
||||||
Adds this user to the specified groups.
|
Adds this user to the specified groups.
|
||||||
|
|
||||||
|
|
@ -75,12 +75,16 @@ Adds this user to the specified groups.
|
||||||
|
|
||||||
An array reference containing a list of groups.
|
An array reference containing a list of groups.
|
||||||
|
|
||||||
|
=item expireOffset
|
||||||
|
|
||||||
|
An override for the default offset of the grouping. Specified in seconds.
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
sub addToGroups {
|
sub addToGroups {
|
||||||
WebGUI::Grouping::addUsersToGroups([$_[0]->{_userId}],$_[1]);
|
WebGUI::Grouping::addUsersToGroups([$_[0]->{_userId}],$_[1],$_[2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ BEGIN {
|
||||||
use Digest::MD5;
|
use Digest::MD5;
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
use strict;
|
use strict;
|
||||||
|
use WebGUI::DateTime;
|
||||||
use WebGUI::Grouping;
|
use WebGUI::Grouping;
|
||||||
use WebGUI::Session;
|
use WebGUI::Session;
|
||||||
use WebGUI::SQL;
|
use WebGUI::SQL;
|
||||||
|
|
@ -35,6 +36,8 @@ my $authMethod = 'WebGUI';
|
||||||
my $groups;
|
my $groups;
|
||||||
my $ldapUrl;
|
my $ldapUrl;
|
||||||
my $status = 'Active';
|
my $status = 'Active';
|
||||||
|
my $expireOffset;
|
||||||
|
my $expireUnits = 'seconds';
|
||||||
|
|
||||||
GetOptions(
|
GetOptions(
|
||||||
'usersfile=s'=>\$usersFile,
|
'usersfile=s'=>\$usersFile,
|
||||||
|
|
@ -45,7 +48,9 @@ GetOptions(
|
||||||
'password|identifier:s'=>\$defaultIdentifier,
|
'password|identifier:s'=>\$defaultIdentifier,
|
||||||
'groups:s'=>\$groups,
|
'groups:s'=>\$groups,
|
||||||
'ldapUrl:s'=>\$ldapUrl,
|
'ldapUrl:s'=>\$ldapUrl,
|
||||||
'status:s'=>\$status
|
'status:s'=>\$status,
|
||||||
|
'expireOffset:i'=>\$expireOffset,
|
||||||
|
'expireUnits:s'=>\$expireUnits
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -72,6 +77,20 @@ Options:
|
||||||
--delimiter The string that separates each field in the
|
--delimiter The string that separates each field in the
|
||||||
import file. Defaults to tab.
|
import file. Defaults to tab.
|
||||||
|
|
||||||
|
--expireOffset The the amount of time before the user will
|
||||||
|
be expired from the groups they are added
|
||||||
|
to. Defaults to the expire offset set in
|
||||||
|
the group definition within WebGUI. May be
|
||||||
|
overridden in the import file.
|
||||||
|
|
||||||
|
--expireUnits Valid values are "seconds", "minutes",
|
||||||
|
"hours", "days", "weeks", "months", "years",
|
||||||
|
or "epoch". Defaults to "seconds". This is
|
||||||
|
the units of the expire offset. If set to
|
||||||
|
"epoch" the system will assume that the
|
||||||
|
expire offset is an epoch date rather than
|
||||||
|
an interval.
|
||||||
|
|
||||||
--groups A comma separated list of group ids that
|
--groups A comma separated list of group ids that
|
||||||
each user in the import file will be set
|
each user in the import file will be set
|
||||||
to. Can be overridden in the import file.
|
to. Can be overridden in the import file.
|
||||||
|
|
@ -102,7 +121,7 @@ User File Format:
|
||||||
-Valid field names:
|
-Valid field names:
|
||||||
|
|
||||||
username password authMethod status
|
username password authMethod status
|
||||||
ldapUrl connectDN groups
|
ldapUrl connectDN groups expireOffset
|
||||||
|
|
||||||
-In addition to the field names above, you may use any
|
-In addition to the field names above, you may use any
|
||||||
valid profile field name.
|
valid profile field name.
|
||||||
|
|
@ -172,6 +191,8 @@ while(<FILE>) {
|
||||||
$user{authMethod} = $authMethod if ($user{authMethod} eq "");
|
$user{authMethod} = $authMethod if ($user{authMethod} eq "");
|
||||||
$user{groups} = $groups if ($user{groups} eq "");
|
$user{groups} = $groups if ($user{groups} eq "");
|
||||||
$user{status} = $status if ($user{status} eq "");
|
$user{status} = $status if ($user{status} eq "");
|
||||||
|
$user{expireOffset} = $expireOffset if ($user{expireOffset} eq "");
|
||||||
|
$user{expireOffset} = calculateExpireOffset($user{expireOffset},$expireUnits);
|
||||||
|
|
||||||
# process user
|
# process user
|
||||||
my ($duplicate) = WebGUI::SQL->quickArray("select count(*) from users where username=".quote($user{username}));
|
my ($duplicate) = WebGUI::SQL->quickArray("select count(*) from users where username=".quote($user{username}));
|
||||||
|
|
@ -197,7 +218,7 @@ while(<FILE>) {
|
||||||
}
|
}
|
||||||
if ($user{groups} ne "") {
|
if ($user{groups} ne "") {
|
||||||
my @groups = split(/,/,$user{groups});
|
my @groups = split(/,/,$user{groups});
|
||||||
$u->addToGroups(\@groups);
|
$u->addToGroups(\@groups,$user{expireOffset});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -208,6 +229,20 @@ WebGUI::Session::close();
|
||||||
print "OK\n";
|
print "OK\n";
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------
|
||||||
|
# calculateExpireOffset(expireOffset,expireUnits)
|
||||||
|
# return: offsetInSeconds
|
||||||
|
sub calculateExpireOffset {
|
||||||
|
my ($offset, $units) = @_;
|
||||||
|
return undef if ($offset < 1);
|
||||||
|
if ($units eq "epoch") {
|
||||||
|
my $seconds = (WebGUI::DateTime::time() - $offset);
|
||||||
|
if ($seconds < 1) {
|
||||||
|
return undef;
|
||||||
|
} else {
|
||||||
|
return $seconds;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return WebGUI::DateTime::intervalToSeconds($offset, $units)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue