projects
/
freeside.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
service refactor!
[freeside.git]
/
FS
/
FS
/
access_user.pm
diff --git
a/FS/FS/access_user.pm
b/FS/FS/access_user.pm
index
830d7f8
..
f45f17d
100644
(file)
--- a/
FS/FS/access_user.pm
+++ b/
FS/FS/access_user.pm
@@
-2,6
+2,8
@@
package FS::access_user;
use strict;
use vars qw( @ISA $htpasswd_file );
use strict;
use vars qw( @ISA $htpasswd_file );
+use FS::UID;
+use FS::Conf;
use FS::Record qw( qsearch qsearchs dbh );
use FS::m2m_Common;
use FS::access_usergroup;
use FS::Record qw( qsearch qsearchs dbh );
use FS::m2m_Common;
use FS::access_usergroup;
@@
-9,8
+11,11
@@
use FS::agent;
@ISA = qw( FS::m2m_Common FS::Record );
@ISA = qw( FS::m2m_Common FS::Record );
-#kludge htpasswd for now
-$htpasswd_file = '/usr/local/etc/freeside/htpasswd';
+#kludge htpasswd for now (i hope this bootstraps okay)
+FS::UID->install_callback( sub {
+ my $conf = new FS::Conf;
+ $htpasswd_file = $conf->base_dir. '/htpasswd';
+} );
=head1 NAME
=head1 NAME
@@
-90,10
+95,13
@@
sub insert {
local $FS::UID::AutoCommit = 0;
my $dbh = dbh;
local $FS::UID::AutoCommit = 0;
my $dbh = dbh;
- my $error =
- $self->SUPER::insert(@_)
- || $self->htpasswd_kludge()
- ;
+ my $error = $self->htpasswd_kludge();
+ if ( $error ) {
+ $dbh->rollback or die $dbh->errstr if $oldAutoCommit;
+ return $error;
+ }
+
+ $error = $self->SUPER::insert(@_);
if ( $error ) {
$dbh->rollback or die $dbh->errstr if $oldAutoCommit;
if ( $error ) {
$dbh->rollback or die $dbh->errstr if $oldAutoCommit;
@@
-126,7
+134,6
@@
sub htpasswd_kludge {
}
}
}
}
-
=item delete
Delete this record from the database.
=item delete
Delete this record from the database.
@@
-183,10
+190,13
@@
sub replace {
local $FS::UID::AutoCommit = 0;
my $dbh = dbh;
local $FS::UID::AutoCommit = 0;
my $dbh = dbh;
- my $error =
- $new->SUPER::replace($old, @_)
- || $new->htpasswd_kludge()
- ;
+ my $error = $new->htpasswd_kludge();
+ if ( $error ) {
+ $dbh->rollback or die $dbh->errstr if $oldAutoCommit;
+ return $error;
+ }
+
+ $error = $new->SUPER::replace($old, @_);
if ( $error ) {
$dbh->rollback or die $dbh->errstr if $oldAutoCommit;
if ( $error ) {
$dbh->rollback or die $dbh->errstr if $oldAutoCommit;
@@
-214,7
+224,7
@@
sub check {
my $error =
$self->ut_numbern('usernum')
my $error =
$self->ut_numbern('usernum')
- || $self->ut_
text
('username')
+ || $self->ut_
alpha
('username')
|| $self->ut_text('_password')
|| $self->ut_text('last')
|| $self->ut_text('first')
|| $self->ut_text('_password')
|| $self->ut_text('last')
|| $self->ut_text('first')
@@
-297,9
+307,14
@@
Returns an sql fragement to select only agentnums this user can view.
sub agentnums_sql {
my $self = shift;
sub agentnums_sql {
my $self = shift;
- '( '.
- join( ' OR ', map "agentnum = $_", $self->agentnums ).
- ' )';
+
+ my @agentnums = map { "agentnum = $_" } $self->agentnums;
+
+ push @agentnums, 'agentnum IS NULL'
+ if $self->access_right('View/link unlinked services');
+
+ return ' 1 = 0 ' unless scalar(@agentnums);
+ '( '. join( ' OR ', @agentnums ). ' )';
}
=item agentnum
}
=item agentnum