aboutsummaryrefslogtreecommitdiffstats
path: root/lib/CatDap/Controller
diff options
context:
space:
mode:
authorBuchan Milne <buchan@mageia.org>2010-11-25 11:34:51 +0000
committerBuchan Milne <buchan@mageia.org>2010-11-25 11:34:51 +0000
commit25d21fb06408f5d9a13bdd396e9174e2c60ab75a (patch)
tree912b187398beffbe84d4aadbbc6c63272fef9fa1 /lib/CatDap/Controller
parente54671ded0cd8db9f6d339c6098f74c7c6e486b0 (diff)
downloadidentity-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/CatDap/Controller')
-rw-r--r--lib/CatDap/Controller/user.pm23
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);