How to prepopulate an Infopath form with FBA authenticated user info

Dec 10, 2011 at 7:50 PM
Edited Dec 10, 2011 at 7:54 PM

I am a newby to Sharepoint development - but impressed with the SharePoint 2010 FBA Pack so far - so well done Chris and others who have contributed.

I have a SHarepoint 2010 / Infopath 2010 site, with an extranet secured using Claims based authentication (using SQL for membership store) and configured with SharePoint 2010 FBA Pack. Essentially the extranet is a rich user profile information store based on a Infopath form sitting on a Sharepoint Form library. The Form works fine - and at the moment I can use it to create  a new 'member detail'. 

The problem
I want to extend the extranet so that not only the extranet users can type in their information and submit it - but authenticate themselves against the Claims based authentication and actually edit the original information that they submitted!

The only page the external users are allowed to access is this  Infopath form where they can submit or modify their personal details.

So far I got the Forms authentication working and I got the Infopath form working - but I do not know how to link the two technologies together!

Namely, how do I set it up so that:

(1) When a new user want to register his / her detail, the user is directed to the SharePoint 2010 FBA Pack Form login page, and then the registration detail are passed to the Infopath form to prepopulate the email and Name fields?

(2) WHen a existing user logs on (using SharePoint 2010 FBA Pack Form login) and want to update his/her detail, how can I securely prepopulate the Infopath form with  the correct user's content from the Sharepoint store of the currently logged on user?

 Appreciate your help in advance!

Coordinator
Dec 10, 2011 at 8:21 PM

I haven't worked with InfoPath before, so i'm not sure how much help I can be.  I have made user profile pages, but i've just created SharePoint web parts and stored the information in the hidden User Information List. Do I understand this correctly: you want to have the FBA Pack Membership Request web part available anonymously.  When the user registers you want them to log in and be directed to your user profile infopath form (which is not available anonymously). Is that correct?

If that's the case, there is an option to auto login the registered user on the membership request web part. You can also set the success url for the web part, so you can set it to redirect to your user profile infopath form page. Have the register page in a library with anonymous access, and the infopath form page in a library without anonymous access.

As for pre-populating the infopath form, with a web part you can read the properties of the logged in SPUser object, as well as lookup user details stored in the hidden User Information List.  I'm not sure if you can do that with an InfoPath form or not (But I would think you'd be able to access basic SharePoint information, like the user's name and email).

Dec 10, 2011 at 8:46 PM
Edited Dec 10, 2011 at 8:46 PM
ccoulson wrote:

Do I understand this correctly: you want to have the FBA Pack Membership Request web part available anonymously.  When the user registers you want them to log in and be directed to your user profile infopath form (which is not available anonymously). Is that correct?

Yeap! Spot on!!! That is exactly what I want to do!! Will try what you suggested and see what happens upon redirection.

With regards to pre-populating Infopath - No I don't either - this is my first Infopath / Sharepoint Project. Will investigate how to interrogate SPUser object from the codebehind page.

Also, slightly off-topic - What is the syntax for accessing the hidden Information List from a sharepoint page - and I will try something similar from Infopath form to find the email and names of the currently authenticated user. Thank you.

Coordinator
Dec 10, 2011 at 11:41 PM

If all you need is the name and email then all you should need is the SPUser object, I don't think you'll need the User Information List at all. If you do, you can access it via SPWeb.SiteUserInfoList.

Dec 11, 2011 at 1:30 AM

Thank you.

Will try it!!!  

In the mean time - I Got some errors deploying it on Production server... Will do a new post...