diff options
author | Buchan Milne <buchan@mageia.org> | 2010-11-25 11:34:51 +0000 |
---|---|---|
committer | Buchan Milne <buchan@mageia.org> | 2010-11-25 11:34:51 +0000 |
commit | 25d21fb06408f5d9a13bdd396e9174e2c60ab75a (patch) | |
tree | 912b187398beffbe84d4aadbbc6c63272fef9fa1 /lib | |
parent | e54671ded0cd8db9f6d339c6098f74c7c6e486b0 (diff) | |
download | identity-25d21fb06408f5d9a13bdd396e9174e2c60ab75a.tar identity-25d21fb06408f5d9a13bdd396e9174e2c60ab75a.tar.gz identity-25d21fb06408f5d9a13bdd396e9174e2c60ab75a.tar.bz2 identity-25d21fb06408f5d9a13bdd396e9174e2c60ab75a.tar.xz identity-25d21fb06408f5d9a13bdd396e9174e2c60ab75a.zip |
Dont hardcode filters, but use user's store configuration
This allows configuration of which user attribute to login with, by
only changing authentication configuration (e.g. in catdap_local.yml)
Diffstat (limited to 'lib')
-rw-r--r-- | lib/CatDap/Controller/user.pm | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/lib/CatDap/Controller/user.pm b/lib/CatDap/Controller/user.pm index 1172346..abae4dd 100644 --- a/lib/CatDap/Controller/user.pm +++ b/lib/CatDap/Controller/user.pm @@ -126,6 +126,7 @@ sub index :Path :Args(0) { my $password; my $mesg; my $dn; + my $userfilter; if (not defined $c->user ) { $c->stash(template => 'index.tt'); @@ -140,8 +141,10 @@ sub index :Path :Args(0) { my $user = $c->user->username; my $entry; - $c->log->debug("Searching for user $user"); - $mesg = $c->model('User')->search("(&(objectclass=inetOrgPerson)(uid=$user))"); + $userfilter = $c->user->store->user_filter; + $userfilter =~ s/\%s/$user/g, + $c->log->debug("Searching for user $user with filter $userfilter"); + $mesg = $c->model('User')->search($userfilter); $entry = $mesg->entry; my %mods; my %params = %{$c->req->parameters}; @@ -165,7 +168,7 @@ sub index :Path :Args(0) { } } - $mesg = $c->model('User')->search("(&(objectclass=inetOrgPerson)(uid=$user))"); + $mesg = $c->model('User')->search($userfilter); $c->log->debug($mesg->error) if $mesg->code; $entry = $mesg->entry; $c->log->debug($mesg->error) if $mesg->code; @@ -222,12 +225,14 @@ sub index :Path :Args(0) { sub add : Local { my ( $self, $c) = @_; - my ($mesg,$entry,$user,$attr,$value); + my ($mesg,$entry,$user,$attr,$value,$userfilter); $attr = $c->req->param('attribute'); $value = $c->req->param('value'); $user = $c->user->username; - $c->log->debug("Searching for user $user"); - $mesg = $c->model('User')->search("(&(objectclass=inetOrgPerson)(uid=$user))"); + $userfilter = $c->user->store->user_filter; + $userfilter = s/%s/$c->user->username/g; + $c->log->debug("Searching for user $user with $userfilter"); + $mesg = $c->model('User')->search($userfilter); $entry = $mesg->entry; $entry->add( $attr => $value); $c->log->info("Adding $attr = $value to user $user"); @@ -239,10 +244,12 @@ sub add : Local { sub delete : Local : Args(2) { my ( $self, $c, $attrname,$attrvalue) = @_; - my ($mesg,$entry,$user); + my ($mesg,$entry,$user,$userfilter); $user = $c->user->username; + $userfilter = $c->user->store->user_filter; + $userfilter =~ s/%s/$c->user->username/g; $c->log->debug("Searching for user $user"); - $mesg = $c->model('User')->search("(&(objectclass=inetOrgPerson)(uid=$user))"); + $mesg = $c->model('User')->search($userfilter); $entry = $mesg->entry; $c->log->info("Deleting $attrname = $attrvalue from user $user"); $entry->delete($attrname => $attrvalue); |