Dropthings - Adapted to Intranet

Mar 18, 2008 at 8:05 PM
I downloaded and played with the Dropthigns portal site source code. It's been an awesome learning experience, as I am a somewhat inexperienced ASP.Net/C#/SQL programmer.

I have been given the task of revamping the California Department of Forestry and Fire Protection's Intranet, and my vision for it was similar to Dropthings and Pageflakes. However, some key differences that have made it hard to adapt the Dropthings example are:

1) We use Kerberos tickets thus Windows Authentication -- no need to log in or out, and security is provided through AD Groups and roles.

2) Our SQL database does not make use of the ASP.Net standard schemas, or Workflow foundation.

3) The pages are tangible aspx files, and on a given page 99% of the time all users will have the same controls, just their own custom state settings - so Instancing is good, they can drag/drop, expand/collapse, etc., but they dont need the ability to add/delete/close controls.

Basically I have gone through Omar's work here and tried to learn (however poorly) as much as I could of the project's mechanics. I understand the fundamentals behind a collections of instances for a page for a given user, and have found a solid way of inserting and retrieving a page's record onInit for each hard page in IIS - they still have their control host collection, and the controls they host within them. And a separate user settings table for a users given settings on a control instance. So the db structure and object model are nearly the exact same.

The most important functionality I am trying to preserve in adaptation is object model and its ability to drag/drop, expand/collapse, and use ASP.Net AJAX to work with a LINQ layer to SQL.

Biggest obstacles are:

A) Unable to determine what unecessary code I can strip from the project and what is requiremed to preserve the functionality I am looking for.

B) Interfaces are somewhat new to me - I think I have it implemented, but I am getting a lot of null reference errors I cant trace properly.

C) Asynchronous Web Services and heavy AJAX is somewhat new to me.


If anyone has ideas or advice, or would care to look at the code i've been, I can pack up the source files and a Visio doc of the db structure.

Sorry for the long-winded post. And thank you very much, ahead of time. I appreciate the mentorship

Gratefully,
-Trey White
twhite@fire.ca.gov
Mar 18, 2008 at 8:52 PM
Edited Mar 18, 2008 at 8:57 PM
To clarify the db structure a little.

1. User's do not have a collection of pages. Pages are simply a metadata record in SQL to provide relation to its collection of WidgetHosts and their defined Widget hosted.

2. Users have their own settings for the control instances within a page's collection - So I have two options here, place "UserID" within ControlInstances table, and make it a composite PK (ControlInstanceID, UserID), or create a seperate table for users' settings: composite PK (PageID, ControlInstanceID, UserID).

3. Users is not a table entity. ASP.Net Schema is not utilized in SQL. So UserID references in SQL are a direct correlation to HttpContext.Current.User.Identity.ID which is their DOMAIN\Username via their Kerberos ticket.

The limit here is that since pages are tangible ASPX files, they are not instanced to the user. So I have to found a route for saving a user's personal settings upon a given page's individual control instances.

For example:
When Joe and Jane goe to Fire Preventions home page, they both see controls for News, Events Calendar, RSS Feeds, etc... and cannot add/remove controls. Yet what Joe does to the controls (Expand/Collapse, Drag/Drop) is saved state for his visit to that page, while Jane's settings are left alone.
Maybe that helps a little.
Mar 31, 2008 at 7:24 PM
Here's something you could consider: Implement your site using forms authentication and the ASP.NET Membership & Roles system.
On the login page, authenticate the userid/password against Active Directory, then if valid automatically create an account for them in your dashborad database using the Membership classes.
This will give you the added ability to limit what pages (other than dashboard) that users have access to using Roles.

I have an internet company login portal that uses this approach, where internal employees login with their Active Directory credentials, but external customers login with the Membership ID & password and do not authenticate to AD. Setting up the .NET Membership system is fairly easy, and in your case all you would need is a login page with id and password with a button.

If you need code examples or anything, let me know.
merlinr1234@gmail.com

Mar 16, 2010 at 3:20 AM
merlinr wrote:
Here's something you could consider: Implement your site using forms authentication and the ASP.NET Membership & Roles system.
On the login page, authenticate the userid/password against Active Directory, then if valid automatically create an account for them in your dashborad database using the Membership classes.
This will give you the added ability to limit what pages (other than dashboard) that users have access to using Roles.

I have an internet company login portal that uses this approach, where internal employees login with their Active Directory credentials, but external customers login with the Membership ID & password and do not authenticate to AD. Setting up the .NET Membership system is fairly easy, and in your case all you would need is a login page with id and password with a button.

If you need code examples or anything, let me know.
merlinr1234@gmail.com

 Hi merlinr,

I am exploring on Dropthings integrates with Active Directory.

I am interested and would like to see how you code and how you configure. Please share with me: albertlse@hotmail.com

Thank you.

Albert