Why do you need two distinct login forms in the same page? Can it be just
one login form (i.e., one call to auth.login()) that you display twice? For
example:
def myaction():
[do stuff]
return dict(..., login_form=auth.login())
View:
{{=login_form # show it here}}
...
{{=login_form # show it somewhere else}}
Anthony
On Monday, November 14, 2011 4:29:24 PM UTC-5, Chris wrote:
>
> After doing some more digging, it appears that each time you call
> auth.login(), you generate a new formkey. The first formkey must get
> overloaded, so the XSRF protection prevents either form from
> submitting.
>
> Any way I can get around this? Sample code:
>
> {{top_login_form = auth.login()}}
> {{=top_login_form.custom.begin}}
> {{=top_login_form.custom.widget.email}}
> {{=top_login_form.custom.widget.password}}
> <input type="image" src="/init/static/images/buttons/
> login.png" id="loginBtn" value="Log In" />
> {{=top_login_form.custom.end}}
> h
> {{top_login_form2 = auth.login()}}
> {{=top_login_form2.custom.begin}}
> {{=top_login_form2.custom.widget.email}}
> {{=top_login_form2.custom.widget.password}}
> <input type="image" src="/init/static/images/buttons/
> login.png" id="loginBtn" value="Log In" />
> {{=top_login_form2.custom.end}}
>
> On Nov 14, 4:24 pm, Chris <[email protected]> wrote:
> > Cool, thanks guys.
> >
> > I do have decorators on certain login-only pages, but I want a page
> > that's visible to both members and guests. The idea is to have a login
> > form that shows up only under certain circumstances.
> >
> > I've done some further tests, and I think auth.login() is working in-
> > template, but it doesn't seem to work if there's already a login form
> > on the page. Can I only call auth.login() once?
> >
> > Here's how I'm attempting to do login now:
> >
> > {{if user_id:}}
> > <span>Welcome {{=user_current().first_name }}!</span>
> > <form>
> > <input type="button" id="logoutBtn" value="Log Out"
> > onclick="window.location.href =
> > '{{=URL('default','user',args=['logout'])}}';" />
> > </form>
> > {{else:}}
> > {{top_login_form = auth.login()}}
> > {{=top_login_form.custom.begin}}
> > {{=top_login_form.custom.widget.email}}
> > {{=top_login_form.custom.widget.password}}
> > {{top_login_form.custom.widget.login}}
> > <input type="image" src="/init/static/images/buttons/
> > login.png" id="loginBtn" value="Log In" />
> > <!--input type="text" placeholder="email" name="email">
> > <input type="password" placeholder="password"
> > name="password">
> > <input type="image" src="/init/static/images/buttons/
> > login.png" id="loginBtn" value="Log In"-->
> > {{=top_login_form.custom.end}}
> > {{pass}}
> >
> > On Nov 14, 4:07 pm, Anthony <[email protected]> wrote:
> >
> >
> >
> >
> >
> >
> >
> > > auth.login() handles its own processing, so you don't need to do
> > > login_form.accepts(). So, just use auth.login() wherever you need it.
> >
> > > Anthony
> >
> > > On Monday, November 14, 2011 3:58:52 PM UTC-5, Chris wrote:
> >
> > > > Hello,
> >
> > > > I'd like to make a login form and have it be accessible in multiple
> > > > pages, without having to rewrite the same code in every single
> > > > controller action:
> >
> > > > login_form = auth.login()
> > > > if login_form.accepts(...
> >
> > > > Is this possible?
> >
> > > > Thanks,
> > > > Chris