[Mageia-sysadm] [139] Dont hardcode filters, but use user's store configuration

root at mageia.org root at mageia.org
Thu Nov 25 12:34:51 CET 2010


Revision: 139
Author:   buchan
Date:     2010-11-25 12:34:51 +0100 (Thu, 25 Nov 2010)
Log Message:
-----------
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)

Modified Paths:
--------------
    identity/CatDap/trunk/lib/CatDap/Controller/user.pm

Modified: identity/CatDap/trunk/lib/CatDap/Controller/user.pm
===================================================================
--- identity/CatDap/trunk/lib/CatDap/Controller/user.pm	2010-11-25 09:26:28 UTC (rev 138)
+++ identity/CatDap/trunk/lib/CatDap/Controller/user.pm	2010-11-25 11:34:51 UTC (rev 139)
@@ -126,6 +126,7 @@
     my $password;
     my $mesg;
     my $dn;
+    my $userfilter;
 
     if (not defined $c->user ) {
         $c->stash(template => 'index.tt');
@@ -140,8 +141,10 @@
 
     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 @@
         }
     }
 
-    $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 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 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);
-------------- next part --------------
An HTML attachment was scrubbed...
URL: </pipermail/mageia-sysadm/attachments/20101125/01989e65/attachment.html>


More information about the Mageia-sysadm mailing list