To be honest the SetRootPermissions
was the last thing that i did that finally fixed it (although i had over issues after), does your override contain any code (mine is attached below)? but there were some other issues with my code, some decorators for classes missing, OpenAccess declarations in the model missing etc, i just had to go through it all again and again. the only other thing i can suggest is to compare you code against the products module, but also read through the documentation on creating the products module (thats how i saw SetRootPermissions was missing), this stuff is really blind, with no error messages it is like i said looking for a needle in a pile of needles you may have to go through the frustration of looking at code untill you finally find the items that are missing, maybe the team at Telerik can get these things to throw some errors, not sure that is really practical but would help in situations like this.
Also, if you make changes, you pretty much have to reinstall the module on a clean install, as for some reason removing it and reinstalling it doesnt always work.
Just some tips (you may be doing some of this already), What we have been doing is creating throw away projects and testing against that, not using out core project as it is a pain to remove modules (hopefully this will be corrected in 4.2) and they will not be installed untill they do everything we need, so situations like this where we have to reload and check reload and check become annoying but less of a pain. Also Firebug saves my life most days, and has helped with 4.0 dev.
Sorry that is not much help, but honestly if i could pin point it to one thing i would.
if (root.Permissions != null || root.Permissions.Count > 0)
var appRoles = Config.Get<
var everyoneRoleId = appRoles[SecurityConstants.AppRoles.Everyone].Id;
var authorsRoleId = appRoles[SecurityConstants.AppRoles.Authors].Id;
var editorsRoleId = appRoles[SecurityConstants.AppRoles.Editors].Id;
var permissionsforEveryoneToViewLocations = this.CreatePermission(LocationConstants.Security.PermissionSetName, root.Id, everyoneRoleId);
var permissionsForOwnersToModifyAndDeleteLocations = this.CreatePermission(LocationConstants.Security.PermissionSetName, root.Id, SecurityManager.OwnerRole.Id);
permissionsForOwnersToModifyAndDeleteLocations.GrantActions(false, LocationConstants.Security.Modify, LocationConstants.Security.Delete);
var editorsPermissionsForProducts = this.CreatePermission(LocationConstants.Security.PermissionSetName, root.Id, editorsRoleId);
var authorsPermissionsForLocations = this.CreatePermission(LocationConstants.Security.PermissionSetName, root.Id, authorsRoleId);