blog.pagesd.info // Archives // Traductions

(Wdevs) Screens and boxes authorizations

2005-03-10 #qc,#wdevs

Finally, I decided to use specific tables rather than fields to manage authorizations for screens and boxes. So I created two tables:

CREATE TABLE qc_ScreenRoles (
    idScreen TEXT(20) NOT NULL,
    aktion TEXT(10) NOT NULL,
    idRole TEXT(20) NOT NULL
);

CREATE TABLE qc_BoxRoles (
    idBox TEXT(20) NOT NULL,
    aktion TEXT(10) NOT NULL,
    idRole TEXT(20) NOT NULL
);

Where aktion field is filled with constants like “view”, “edit” or “admin”. I had to write “aktion” because Access don’t accept “action” as a field name.

A generic AktionRoles class handles these two tables and the qc_UserRoles for user’s roles.

The main difficulty was to find how to propose the user to set rights. I looked for a layout that don’t rely on a CheckBoxList like IBuySpy because it’s not easy as soon as you got more than 10 roles. I really like the layout adopted in DotNetNuke 3 where actions are displayed on the first line as column headers and with a row by role even if it’s heavily rest on table tags. Personally, I determine to write a specific UserControl that use a cleaner html code with three properties :

* actionsTitles for headers ("View", "Edit" or "Admin"),
* actionsId for field constants ("view", "edit" and "admin"),
* actionsRoles for authorization assignments.

(missing image)

The last step will be to check all this authorizations when displaying screens and boxes. Currently, I can configure rights but they are not used.