Access the FBA Pages as non-site collection administrator

Topics: General/Misc., Internet/Extranet Edition, User Group Edition
Nov 9, 2008 at 9:29 AM
I deploy the CKS. now i found that i cant access the FBA pages if i am not a site collection admin. Is there any way so i can resolve this?

Best Regards,

Zobayer Rabbi
Developer
Nov 10, 2008 at 5:13 PM
I'm not sure I understand your issue.  Are you saying you can't access the FBA management pages (via site settings), or you can't access the FBA site itself?

Some of the FBA Management pages require Site Collection Administrator, because the built-in User Information List requires it.

Regards,
Mike Sharp
Nov 11, 2008 at 4:11 AM
Hi Mike,

Thanks for your quick reply. My issue is i can access the FBA Management only as a Site collection administrator. But i need to access them as a normal user or as a Admin User. now I know its not implemented yet. Is there any way i can do that?

Best Regards,
Zobayer Rabbi
Developer
Nov 11, 2008 at 6:12 AM
There have been several posts on this, but in summary you have to do several things, one of which might be very hard.

1.  Change the features so that they don't require Site Collection Admin. (Easy)
2.  Edit the code where it overrides RequireSiteCollectionAdmin, or remove the entire method. (Easy)
3.  Modify the User Information List permissions so that Site Collection Admin isn't required to add users to this list. (May be very hard, or have disadvantages).

A while back I started down the path of making these changes, and only found out at the end that the User Information List requires Site Collection Admin right to add users.  I didn't have time then to pursue it further, but am planning on addressing this eventually, as I'd like to grant the right to the Owners group, or at least make it configurable. 

I'm saying it might be hard to do only because I stopped before doing that part, and there may be consequences or difficulties that I don't know about.  But it should be doable.

Regards,
Mike Sharp
Nov 12, 2008 at 2:23 AM
Edited Nov 12, 2008 at 2:54 AM
Hi Mike,

I need the same functionality to work. I created distributed admin roles who only have rights to their subsites and I want them to administer the users for their site. I modified the code to only show the distributed admin the roles that he/she has rights to. However, I now have the problem where they cannot get to the UsersDisp.aspx page. I made the changes for step 1 and step 2 but I'm trying to figure out what needs to be done for step 3 as I don't have it working 100% yet.

Have you or anyone pursued this further? 

Thanks,

Christina Wheeler
Developer
Nov 12, 2008 at 5:42 AM
Hi Christina,

The distributed admin roles will need the ManagePermissions right, if they don't already have it.   I think you might need to modify the security on the User Information list itself, too.  This will probably have to be done in SharePoint Designer.  Unfortunately I got about as far as you (along with adding it as a configurable item in the FBASiteConfiguration page), but a deadline intervened, and I had to roll back my changes.

It's been a while, but if my memory serves, when I had the debugger attached, it failed when the update to the User Info list occurred.

For what it's worth, I'll be starting a project for another client soon where I'll have to revisit this, but that part won't happen until late December, I think.

Regards,
Mike Sharp
Nov 16, 2008 at 4:25 AM
Hi Mike,

I make the menus enable for the admin users. Now I can create user. But I cant access the UserDisp.aspx. I got the following error:

Value does not fall within the expected range.   at Microsoft.SharePoint.SPListCollection.GetListByName(String strListName, Boolean bThrowException) 
   at Microsoft.SharePoint.SPListCollection.get_Item(String strListName) 
   at CKS.FormsBasedAuthentication.FBAUsersView.ExecuteSelect(DataSourceSelectArguments selectArgs) 
   at System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) 
   at System.Web.UI.WebControls.DataBoundControl.PerformSelect() 
   at System.Web.UI.WebControls.BaseDataBoundControl.DataBind() 
   at System.Web.UI.WebControls.GridView.DataBind() 
   at System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() 
   at System.Web.UI.WebControls.CompositeDataBoundControl.CreateChildControls() 
   at System.Web.UI.Control.EnsureChildControls() 
   at System.Web.UI.Control.PreRenderRecursiveInternal() 
   at System.Web.UI.Control.PreRenderRecursiveInternal() 
   at System.Web.UI.Control.PreRenderRecursiveInternal() 
   at System.Web.UI.Control.PreRenderRecursiveInternal() 
   at System.Web.UI.Control.PreRenderRecursiveInternal() 
   at System.Web.UI.Control.PreRenderRecursiveInternal() 
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 

I am not good in .Net programming. So i need help from someone expert.


Thank You
Zobayer Rabbi