Yes there is. I have done something similar, but the lookup of the current user is against a Sharepoint Group.
A) If you have that list of people in a Sharepoint list, you can run a query rule from a secondary connection to that list and put the user account (from username() function) in the query field. Your list must be already prepared accordingly and contain the user accounts (in a text field) of all necessary people. Having just the names or the the accounts defined as Person or Group field on the list, will not allow you to do use the query fields as Person is not among those).
B) Matching to a Sharepoint Group:
You can check the link. It shows how to use and modify GetUserCollectionFromGroup web-service from Sharepoint.
#1 Once you have completed the match you can store the result in a hidden field on the Infopath form, the use that field in formatting rules to disable/hide any controls you need, whole sections.
For views, On Form Load:
- use the first rule to specify to load the most restrictive view, then in another rule right after..
- run an action rule to execute the queries as specified for the GetUserCollectionFromGroup.
Use username() IP function to get the user if necessary. You can also use the GetUserProfileByName Sharepoint web-service in secondary data connection, but if your setup involves separate web-servers, it might be returning the AppPoolAccount. If not, use the Preferred Name field returned from that web-service.
- Run Action rule, which Changes the View to the "Admin View" if the result/flag you saved (#1, above) is what you are expecting for an admin or that special user/group.
Hope it helps.