On Wednesday, September 26, 2018 at 5:17:00 AM UTC-7, Adam Howell wrote:
>
> I did some testing & noted that since we authenticate through active 
> directory, our users never seem to hit '/login' from a debug print 'req.
> path_info'
>

Are you using AccountManagerPlugin with one of the LDAP plugins?

I expect that you'd still hit /login if you are navigating to the "Login" 
link in Trac's meta navigation menu. Or do you have an authentication 
method in front of Trac, handled through Apache?

If the latter is the case, maybe you can direct to a URL like /handle_login 
after authenticating in Active directory (by configuring Apache to 
redirect), do the work in IRequestHandler.process_request and then redirect 
back to the default handler. Ideally you don't want the code you've 
implemented in pre_process_request to run on every request, which appears 
to be the case as you've written it.

Are you running Trac 1.2 or later? Environment.get_known_users has an 
"as_dict" parameter, so you can get a dictionary and avoid iterating over 
an entire list.

Other minor things:

updateScript and updateScript != '' 

can be replaced with just "updateScript", the latter comparison is 
redundant.

Similarly,

display is None or len(display) == 0

can be just:

not display

 

> I implemented the IRequestFilter & was wondering if this method was too 
> invasive
>     def pre_process_request(self, req, handler):
>
>         updateScript  = self.config.get('updateusersession', 
> 'update_script_location', '');
>
>         self.log.debug("updateusersession entered for evaluation for '%s'" 
> % req.authname);
>         if (updateScript and updateScript != ''):
>             updateDisplay = self.config.get('updateusersession', 
> 'update_when_display_is_empty', False);
>             updateEmail   = self.config.get('updateusersession', 
> 'update_when_email_is_empty'  , False);
>
>             for user, display, email in self.env.get_known_users():
>                 if user != req.authname:
>                     continue;
>
>                 if (updateDisplay and (display is None or len(display) == 
> 0) ) or (updateEmail and (email is None or len(email) == 0) ):
>                     self.log.debug("updateusersession calling script '%s' 
> with arguments:'%s' '%s'" % ( updateScript, self.env.path, user ) );
>                     results = subprocess.Popen("%s %s %s" % (updateScript, 
> self.env.path, user ),
>                                       shell=True,stdout=subprocess.PIPE,
> stderr=subprocess.PIPE)
>                     results.communicate()
>
>         return handler
>

-- 
You received this message because you are subscribed to the Google Groups "Trac 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/trac-users.
For more options, visit https://groups.google.com/d/optout.

Reply via email to