It's not fun, HUH!...
Have you checked?
1. Component in the menu
2. Access to component in the permission list
3. permission list in the role
4. the role assigned to the user profile
5. clear browser cache, close the browser, reopen browser
6. clear and reboot app server cache
Ya..Ya..all checked, but why it still errors out??? I know your frustration, and don't bang your head against the table yet.
This is what I found today that I want to add it into the list:
7. non-existing permission list assigned to the role.
What!! How could it be possible?
The only way that non-existing permission list in the role is by doing a project migration from database to database. You may think the permission list in the project, but apparently not.
If you were like me, I do not add roles, permission lists, menu in my project. Unless you are the sole developer for the system, I would encourage to stay away from it.
Here is a SQL to check if there is non-existed permission list which is still attached to role:
Select R.rolename , RC.classidFrom psroleuser R , psroleclass RCWhere RC.Rolename = R.Rolename And not exists (Select 'X' from psclassdefn C Where C.classid = RC.classid) And R.roleuser = '[--OPRID--]'
Note: Replace [--OPRID--] to the actual user oprid.