added user interface for svc_forward and vpopmail support
[freeside.git] / FS / FS / svc_acct.pm
index a22ecdf..42eb7d9 100644 (file)
@@ -82,6 +82,10 @@ FS::svc_acct - Object methods for svc_acct records
 
   %hash = $record->radius;
 
+  %hash = $record->radius_reply;
+
+  %hash = $record->radius_check;
+
 =head1 DESCRIPTION
 
 An FS::svc_acct object represents an account.  FS::svc_acct inherits from
@@ -113,6 +117,8 @@ FS::svc_Common.  The following fields are currently supported:
 
 =item radius_I<Radius_Attribute> - I<Radius-Attribute>
 
+=item domsvc - service number of svc_domain with which to associate
+
 =back
 
 =head1 METHODS
@@ -169,7 +175,9 @@ sub insert {
   return $error if $error;
 
   return "Username ". $self->username. " in use"
-    if qsearchs( 'svc_acct', { 'username' => $self->username } );
+    if qsearchs( 'svc_acct', { 'username' => $self->username,
+                               'domsvc'   => $self->domsvc,
+                             } );
 
   my $part_svc = qsearchs( 'part_svc', { 'svcpart' => $self->svcpart } );
   return "Unknown svcpart" unless $part_svc;
@@ -379,6 +387,9 @@ sub check {
   return $x unless ref($x);
   my $part_svc = $x;
 
+  my $error = $self->ut_number('domsvc');
+  return $error if $error;
+
   my $ulen = $usernamemax || $self->dbdef_table->column('username')->length;
   $recref->{username} =~ /^([a-z0-9_\-\.]{$usernamemin,$ulen})$/
     or return "Illegal username";
@@ -408,8 +419,8 @@ sub check {
     return "Only root can have uid 0"
       if $recref->{uid} == 0 && $recref->{username} ne 'root';
 
-    my($error);
-    return $error if $error=$self->ut_textn('finger');
+    $error = $self->ut_textn('finger');
+    return $error if $error;
 
     $recref->{dir} =~ /^([\/\w\-]*)$/
       or return "Illegal directory";
@@ -540,11 +551,30 @@ sub radius_check {
   } grep { /^rc_/ && $self->getfield($_) } fields( $self->table );
 }
 
+=item email
+
+Returns an email address associated with the account.
+
 =cut
 
+sub email {
+  my $self = shift;
+  my $domain;
+  my $svc_domain = qsearchs( 'svc_domain', { 'svcnum' => $self->domsvc } );
+  if ($svc_domain) {
+    $domain=$svc_domain->domain;
+  }else{
+    warn "couldn't find svc_acct.domsvc " . $self->domsvc . "!";
+    $domain="unknown";
+  }
+  return $self->username . "@" . $domain;
+}
+
+=back
+
 =head1 VERSION
 
-$Id: svc_acct.pm,v 1.18 2001-07-30 06:28:45 ivan Exp $
+$Id: svc_acct.pm,v 1.24 2001-08-19 15:53:34 jeff Exp $
 
 =head1 BUGS