While experimenting with some permission settings on a SharePoint Survey List this evening I made a rather nasty discovery: Page separators and Edit Access permissions do not mix:
Allow me to explain: I have a SharePoint Survey List that has sets of questions that I aggregate together using the Page Separator field type – this keeps the survey UI manageable for the user it is a bit lengthy (forty-seven questions in a mix of multi-choice and free text fields). Not a big deal – well within the realm of what an OOTB Survey List is designed to handle.
However, a recent requirement surfaced during an iteration planning session to control edit access to submitted surveys – once a response is submitted, a user shouldn’t be able to go back and change it. Again, this shouldn’t be a problem, I thought – just modify the Edit Access permissions for the list from the Advanced Settings (see above picture) and set to None.
And so it began: When I logged in to the list as a regular user and responded to the survey, everything was going well on the first page:

Then, I clicked Next…

NO ACCESS FOR YOU, ADINAA!
What’s the issue?
In a word: Permissions. In many more words, a combination of permissions and the lifecycle for a SharePoint Survey List Item.
When a user first clicks Respond to this survey on the list, SharePoint creates a row for the new response record and fires the ItemAdding and ItemAdded events. When the user then clicks on the Next button to move things along past the page separator to the next series of questions, SharePoint updates the record and fires the ItemUpdated event. The only way you know whether a survey respondent has actually completed the survey and clicked Finish is by checking the list’s Completed field for a value of “1” (it’s “255” otherwise) while you’re in the ItemUpdated event handler.
It’s this event that the aforementioned permissions are gated against – when the list Edit Access permissions are set to None, any attempt by a non-admin user to “update” their record by clicking Next is met with an Access Denied response. Change the settings back to Only their own, and the expected functionality is restored.
What’s the workaround?
Um – haven’t thought of one yet as this is really tied to how the Survey List behaves at a functional level. In my case, the quick and dirty solution may be satisfied by another user story which describes closing off access to a survey once the Survey Closed Date has passed. Initially, this will involve removing Contribute permissions on the list for non-admin users and restricting them to Read Only – but this still doesn’t solve the problem of editing submitted surveys prior to the close off date.
I may have a solution shortly, but for now I am noting this as a “known issue”.