J. Shirley wrote:
On Mon, Dec 29, 2008 at 9:02 AM, Giancarlo Corcuera
<[email protected]> wrote:
J. Shirley wrote:
On Mon, Dec 29, 2008 at 8:36 AM, Giancarlo Corcuera
<[email protected]> wrote:
Sorry, if you referred to this...
Here is my login method:
sub login :Chained('lang') :PathPart('sign_in') :Args(0) :Form {
my ($self, $c) = @_;
my $url_language = $c->stash->{'language'};
my $lang_id = $c->stash->{'language_id'};
my $form_data = load_tags($c,'fe_login_form', $lang_id);
$c->stash->{'page_title'} = $form_data->{'form_title'};
my $form = $self->formbuilder->new(
{
'source' => $c->config->{'home'}.'/root/forms/login/login.fb',
'title' => $form_data->{'form_title'},
'submit' => $form_data->{'sign_in'},
'header' => 0
} );
$form->field(
'name' => 'username',
'label' => $form_data->{'username'}
);
$form->field(
'name' => 'password',
'label' => $form_data->{'password'}
);
$form->field(
'name' => 'qr_submit',
'type' => 'hidden'
);
if ( $form->submitted && $form->validate ) {
my $qr_submit = $form->field('qr_submit') || 0;
if ( $c->login( $form->field('username'),
$form->field('password') ) ) {
$c->session->{'user_id'} = $c->user->user_id;
$c->session->{'is_client'} = $c->user->is_client;
if ( $c->user->is_client eq 'Y' ) {
$c->session->{'user_cty'} =
$c->user->b_customer_id->
b_country_id->country_code;
$c->forward('set_currency_format',[$c->session->{'user_cty'}]);
$url_language =
$c->user->b_customer_id->b_country_id
->language_iso;
}
else {
$c->session->{'user_cty'} = 'US';
$c->forward('set_currency_format', ['US']);
};
$c->forward('user_roles', [$c->user->user_id]);
$c->forward('lang_session',[]);
}
else {
if ( $qr_submit == 1 ) {
$c->flash->{'login_username'} =
$form->field('username');
$c->flash->{'login_qr'} = 1;
$c->flash->{'login_error'} = $form_data->{'error_message'};
$c->session->{'rq'} = undef;
_*
$c->res->redirect($c->uri_for("/$url_language/quotes/edit"));
$c->detach();*_
};
$c->flash->{'error'} = $form_data->{'error_message'};
_*
$c->res->redirect($c->uri_for("/$url_language/sign_in"));
$c->detach();*_
};
if ( $qr_submit == 1 ) {
$c->session->{'rq'} = undef;
_*
$c->res->redirect($c->uri_for("/$url_language/quotes/edit"));
$c->detach();*_
};
if ( $c->user->is_client eq 'N' ) {
_* $c->res->redirect($c->uri_for('/administrator'));
$c->detach();*_
}
else {
$c->session->{'rq'} = undef;
_* $c->res->redirect($c->uri_for("/$url_language"));
$c->detach();*_
};
};
$c->stash->{'path'} = $c->request->{'path'};
$c->stash->{'template'} = 'login.tt2';
};
after some operations and/or validations (which are working perfectly)
none
of the redirects works in IE but it does on Firefox.
Thanks,
Giancarlo
J. Shirley wrote:
On Mon, Dec 29, 2008 at 8:06 AM, Giancarlo Corcuera
<[email protected]> wrote:
I made an application that works fine in the Debian server with
catalyst.
The problem comes when I use any redirect inside a controller module.
For example:
When I sign in the application redirects me to the appropiate page
according
to the user type but in IE it doesn't redirect and showed an error page
that
states "IE can't show the desired page". So after I press back and
ctrl+F5 I
can see that the session is already created so the user is now logged
in
the
system.
Any advice will be appreciated,
Regards,
Giancarlo Corcuera
Hi there,
Please paste in the controller code that is relevant.
Thanks,
-Jay
(Thank you for bottom posting after this :))
In the Catalyst output debug messages, it should say "Redirecting to
[URL]" when the redirect happens. Make sure that the URL is specified
in that message.
The redirect code itself looks legitimate, but I'm not sure if the 302
status code (which is the default on $c->res->redirect) is what you
want. Try setting it to 303 (See
http://en.wikipedia.org/wiki/List_of_HTTP_status_codes for more
details) and try again. The syntax for this is simply doing:
$c->res->redirect( $uri, 303 ); By default Catalyst uses 302.
The other thing to try is to verify that the Response headers are
being sent out the way that you expect them to. Try installing
Wireshark (http://www.wireshark.org/) and inspect the HTTP headers
between requests in Firefox and IE; compare any differences.
Hope this helps,
-J
_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive:
http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/
One more thing that I find unusual:
Ubuntu server with catalyst: I don't have that problem in any browser (I've
triedd on firefox, IE, chrome, safari and opera)
Debian server with catalyst: everyone failed but Firefox.
So maybe could be some stuff in my server but I'm not sure, that's why I'm
asking for any advice or known issue in this topic.
Thanks for your quick responses,
Giancarlo
Ah, ok, in that case I'm guessing you are running a rather old version
of Catalyst::Runtime -- try upgrading Catalyst from CPAN:
$ cpan Catalyst::Runtime
That will update, and should fix your issue.
-J
_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/
Thanx again for your response, it seems that the problem is now solved
adding the -k parameter when running the catalyst and now it makes the
redirects work fine.
Regards,
Giancarlo
_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/