Re: [Catalyst] Transferring control via root/auto

2010-12-09 Thread Thompson
How would you use a chained dispatch to solve a problem like this?  
Something that needs to be checked before allowing anything else 
(besides logging in) to happen and if so force them to a specific page?  
A simple example would help.  I'm still have it in my head that this 
logic should be done in the root controller since it would supersede any 
action in my other controllers.


Thanks,
Rob

On 12/8/2010 8:31 AM, Tomas Doran wrote:


On 7 Dec 2010, at 16:11, Ben van Staveren wrote:

You want to $c-detach('end') -- unless that's the default these 
days. I use this pattern a lot and the only difference I see is that 
I do:


The end action will _always_ be run, there is no need to detach to the 
end action.


However I'm not sure what doing $c-detach in auto will do (I guess 
the same as returning 0 - i.e. stop further actions from running), but 
I'm not sure - you should probably return 0 (to stop further dispatch) 
rather than detaching in the auto action..


However as noted elsewhere in this thread, I'd seriously recommend 
using Chained dispatch rather than auto for this (if for no other 
reason then it avoids the re-entering auto in the next request after 
you redirect issue).


Cheers
t0m


___
List: Catalyst@lists.scsys.co.uk
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: 
http://www.mail-archive.com/catalyst@lists.scsys.co.uk/

Dev site: http://dev.catalyst.perl.org/





___
List: Catalyst@lists.scsys.co.uk
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
Dev site: http://dev.catalyst.perl.org/


[Catalyst] Transferring control via root/auto

2010-12-07 Thread Thompson

Here is my problem,

If a user logs in for the 1st time I want to force them to change their
password.  I have a specific action in my Users controller to handle
that.  What I'm having a problem with is (redirecting or forwarding or
detaching - i've tried them all) from the root/auto function to my
specific controller function.  I either get an internal server error or
page isn't redirecting properly, depending what i use.  I've put my
logic in the root/auto because regardless of the request changing their
password is mandatory.

Here is my current root/auto using redirect.

sub auto : Private {
  my ($self, $c) = @_;

  if ($c-user_exists()  $c-check_any_user_role('User')
  $c-user-changePassword  ) {

$c-res-redirect($c-uri_for($c-controller('Users')-action_for('loginedit'), 


[$c-user-id] ));
 $c-detach();
  }

  return 1;
  }

Any help would be appreciated.
Rob T

___
List: Catalyst@lists.scsys.co.uk
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
Dev site: http://dev.catalyst.perl.org/