[Catalyst] Formhandler and Auth

Eric Berg eberg at bergbrains.com
Mon Mar 7 00:03:37 GMT 2011

On 3/4/11 11:03 AM, Gerda Shank wrote:
> On 3/4/11 8:23 AM, Eric Berg wrote:
>> I'm trying to do some progressive engagement by allowing one of my 
>> forms to be filled out before a user is required to log in, but once 
>> the form is filled, I need them to log in so that I can get the user 
>> ID, which is part of the record for that form's row in my db.
> So after the form is submitted, you want to save the form contents 
> somehow, then present a login form, then after the user logs in, save 
> it to the database?
Yes.  What I did previously was just to save a hash of the values, but 
I'm not sure how to pass that to formhandler given that my db 
constraints currently require the values for this form to have a 
creator_id, which is just what I need from the login.  So, I'm thinking 
at this point that I need to find a way to pass a hash of form values 
back to formhandler..that's got to be possible, and must be done after I 
get the form submission or I'll have to loosen up the constraints on my 
db to allow me to insert rows without a creator ID.  I'm looking into 
that now.
> Is the part you're not sure of how/where to save the form contents? 
> There are the usual options for preserving data across several 
> requests, i.e. stash, database, etc.
I've been stashing a hash of form params.  I have to test this out, but 
I have to figure out if I can validate the form without the creator_id's 
being present.  I added it to the form, because formhandler was barfing 
when I used the simple form of stashing the new_result({}), then 
returning $self->form($c) in my add().   I have to figure out how to 
validate the form wtihout having it submitted to teh db, because that 
causes an error when the creator_id is missing, or add the creator_id 
(hidden and empty) to the form and only validate after login.  I guess I 
just have to try a few things.  If any of you good folks have banged 
your head against this and have ideas, they'd certainly be welcome.
> Then you'd have to decide how you want to save the data. You *could* 
> use FormHandler to do that, but if you have an already validated set 
> of data, it might be simpler to just save it to the database yourself.
May be.  Probably, since I'm trying to wrest control from formhandler so 
I can validate a form without the creator_id, then redirect to login, 
then take the values of the form and the logged-in user's id and commit 
that to the db.  One change that is causing me problems is that I moved 
from the approach of having the form be a simple attribute (has 'form') 
where I was doing all the processing in the show and add methods to the 
approach where I implemented $self->form() per the sample referenced in 

Thinking through this in writing this, I believe that what I have to do 
is reimplement the form as a simple attribute and then handle the 
process() as needed in the add() method.  I think that's where I shot 
myself in the foot.

Thank you muchly.  I'll post my successful results for the benefit of 
those who follow.

> I'm not quite sure if I addressed the particular issues you were 
> having; if not, please clarify :)
> Gerda
> _______________________________________________
> List: Catalyst at 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/

More information about the Catalyst mailing list