I have been working with the SC security module from SC7, now SC9 in my projects. I use the security by groups (like roles) option, in which one can grant privileges to groups, and assign users to that security groups. I have found an issue that I have spent many hours to solve, but finally done.
As you know, scriptcase generates the tables and applications of the security module automatically. In particular, the referenced application to maintain the privileges granted to groups (roles): “app_form_sec_groups_apps”. This application, at least in my current SC 9.1 vesion 9.09.0003, presents an issue as follows: when one tries to change a privilege to “deny” in a particular app, the application crashes and doesn’t make any change in the security table “sec_groups_apps”. The same behavior occurs if one makes any change in the record and some privilege is set to “deny” before, despite one doesn’t change to “deny” any privilege. This discovery leads me to suspect the problem is related to the “deny” value in any privilege when the record is updated (“save selected” button). So I did dive into the settings of checkbox fields associated with each privilege field in the application and realized that the empty or negative value for the check box is not specified in the original srciptcase generated application. It must be specified because if not, the system assumes a NULL value and it seems to be the internal code of the application can’t set a NULL value in the UPDATE SQL. When I did update the configuration of each privilege checkbox field with an “N” value in the “negative” attribute the problem disappeared. Please see the attached pictures for reference: