diff options
author | levinse <levinse> | 2011-06-21 01:08:07 +0000 |
---|---|---|
committer | levinse <levinse> | 2011-06-21 01:08:07 +0000 |
commit | 9f2280fbce022ab9bcfc46fe94483730b0aeb0f8 (patch) | |
tree | 15865cb482bc3995d423f95f1d45ca13b90c4905 /FS/FS/radius_usergroup.pm | |
parent | 44ce5ab2e8edd012154d3bb7e5711341e8c6cf35 (diff) |
re-write RADIUS groups, RT13274
Diffstat (limited to 'FS/FS/radius_usergroup.pm')
-rw-r--r-- | FS/FS/radius_usergroup.pm | 54 |
1 files changed, 45 insertions, 9 deletions
diff --git a/FS/FS/radius_usergroup.pm b/FS/FS/radius_usergroup.pm index 9bba057..2de1423 100644 --- a/FS/FS/radius_usergroup.pm +++ b/FS/FS/radius_usergroup.pm @@ -4,6 +4,7 @@ use strict; use vars qw( @ISA ); use FS::Record qw( qsearch qsearchs ); use FS::svc_acct; +use FS::radius_group; @ISA = qw(FS::Record); @@ -29,8 +30,8 @@ FS::radius_usergroup - Object methods for radius_usergroup records =head1 DESCRIPTION An FS::radius_usergroup object links an account (see L<FS::svc_acct>) with a -RADIUS group. FS::radius_usergroup inherits from FS::Record. The following -fields are currently supported: +RADIUS group (see L<FS::radius_group>). FS::radius_usergroup inherits from +FS::Record. The following fields are currently supported: =over 4 @@ -38,7 +39,7 @@ fields are currently supported: =item svcnum - Account (see L<FS::svc_acct>). -=item groupname - group name +=item groupnum - RADIUS group (see L<FS::radius_group>). =back @@ -96,10 +97,11 @@ and replace methods. sub check { my $self = shift; + die "radius_usergroup.groupname is deprecated" if $self->groupname; + $self->ut_numbern('usergroupnum') - || $self->ut_number('svcnum') || $self->ut_foreign_key('svcnum','svc_acct','svcnum') - || $self->ut_text('groupname') + || $self->ut_foreign_key('groupnum','radius_group','groupnum') || $self->SUPER::check ; } @@ -115,15 +117,49 @@ sub svc_acct { qsearchs('svc_acct', { svcnum => $self->svcnum } ); } -=back +=item radius_group + +Returns the RADIUS group associated with this record (see L<FS::radius_group>). + +=cut -=head1 BUGS +sub radius_group { + my $self = shift; + qsearchs('radius_group', { 'groupnum' => $self->groupnum } ); +} -Don't let 'em get you down. +sub _upgrade_data { #class method + my ($class, %opts) = @_; + + my %group_cache = map { $_->groupname => $_->groupnum } + qsearch('radius_group', {}); + + my @radius_usergroup = qsearch('radius_usergroup', {} ); + my $error = ''; + foreach my $rug ( @radius_usergroup ) { + my $groupname = $rug->groupname; + next unless $groupname; + unless(defined($group_cache{$groupname})) { + my $g = new FS::radius_group { + 'groupname' => $groupname, + 'description' => $groupname, + }; + $error = $g->insert; + die $error if $error; + $group_cache{$groupname} = $g->groupnum; + } + $rug->groupnum($group_cache{$groupname}); + $rug->groupname(''); + $error = $rug->replace; + die $error if $error; + } +} + +=back =head1 SEE ALSO -L<svc_acct>, L<FS::Record>, schema.html from the base documentation. +L<svc_acct>, L<FS::radius_group>, L<FS::Record>, schema.html from the base documentation. =cut |