[development] redirect login block when user enters wrong user/pass

John Barreiros johnbarreiros2 at gmail.com
Wed Oct 31 15:47:51 UTC 2007


That worked perfectly and it even persists the error messages, which means I
can remove the "drupal_set_message" line I had included.

Thank you Saint-Genest, for the help and not shrugging me off and telling me
to go to the support list like David did (which I did and did not receive a
response).

On 10/31/07, Saint-Genest Gwenael <gwenael.saint-genest at makina-corpus.com>
wrote:
>
> Hi,
>
>     Your "drupal_goto()" doesn't work because at this point the value
> of $_REQUEST['destination'] is already set [1]. So your drupal_goto()
> will reload the page but not with 'user'. After reload no validation
> is needed, your function is not called :(
>
>
> I think, a quick solution is to unset 'destination' value before
> calling drupal_goto() :
>
> function myutility_user_login_validate($form_id, $form_values) {
>    user_login_validate($form_id, $form_values);
>    if (count(form_get_errors()) > 0) {
>      unset($_REQUEST['destination']);
>      drupal_set_message('test error message');
>      drupal_goto('user');
>    }
>
> It's not a beauty solution but i think it's the simplest :)
>
> Gwen
>
>
> [1] http://api.drupal.org/api/function/drupal_goto/5
>
>
> John Barreiros wrote:
> > Hi
> >
> > First, I realize what I'm doing isn't the most usable, but it's how the
> > client wants it.
> >
> > On the homepage, the user login block is styled all fancy and compact.
> > Unfortunately, it's compactness prevents a place for an error message if
> the
> > user messes up their username or password.
> >
> > So, what I'd like to do, when the form fails validation, is redirect the
> > user to "/user" which displays the regular login form along with the
> error
> > messages that would of displayed within the block.
> > I tried the following (in my own module),
> >
> > function myutility_form_alter($form_id, &$form) {
> >   switch ($form_id) {
> >     case 'user_login_block':
> >       $form['#validate'] = array('utility_user_login_validate' =>
> > array($form_id, $form));
> >       unset($form['links']);
> >       break;
> >   }
> > }
> >
> > function myutility_user_login_validate($form_id, $form_values) {
> >   user_login_validate($form_id, $form_values);
> >   if (count(form_get_errors()) > 0) {
> >     drupal_set_message('test error message');
> >     //print "here";
> >     drupal_goto('user');
> >   }
> > }
> >
> > The drupal_goto doesn't seem to work here. I'm fairly confident the code
> is
> > making it to the drupal_goto because if I uncomment the "print"
> statement is
> > does get called and prints out "here".
> >
> > Any ideas why drupal_goto isn't working in this case?
> >
> > Thanks for the help.
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.drupal.org/pipermail/development/attachments/20071031/4c830a4a/attachment.htm 


More information about the development mailing list