At 01:56 PM 9/28/01 +1200, you wrote:
>best way to handle would require a way of detaching the suspension from
>access list, that way if the access is removed then re-added the suspension
>remains (probably require a separate suspension table that would mimic the
>access list except only have entries for actual suspensions)

If this is to be done, which seems like a good idea ...

The suspension table entries should probably consist simply of one of the
fields from the user record of the person who set the suspension. This
field would be one which is always unique to that particular user record.
(If I recall correctly, there are at least two such fields in the Cservice
database user records; it's been a while since I looked at GNUworld.)

The simple way to handle it would be then to always accept REMUSER or
UNSUSPEND on a suspended user -except- when -all- of the following
conditions are true:

* The suspendor, as indicated by the suspension table entry, is still
  an existing user, and still has access on the channel.

* The suspendor is not the same user as the person attempting to remove
  or unsuspend the user.

* The suspendor is of equal or higher access on the channel than the
  operator attempting to remove the suspension or user.

The rationale for these is as follows:

* A user who has had their ops revoked on a channel, or has resigned
  from operator status, does no longer have authority on the channel.
  Therefore, their access is effectively zero, and -anyone- attempting
  to remove the user or suspension is of higher authority (see below
  for further comments).

* A user who sets a suspension on another should have the ability to
  remove that suspension, or to further discipline that user by total
  removal, without technical interference. I.e., if an op can do
  something, they should also have the ability to undo it with equal
  ease as far as is technically possible.

* If the suspendor is of lower access than the operator attempting to
  remove the suspension or user, then said operator has authority over
  the suspendor. It is bogus, and can easily interfere with channel
  administration, to fail to permit this authority to override the
  suspension.

  If the suspendor is of equal access to the operator attempting to
  remove the suspension or user, then both have equal authority. To
  prevent the 'betrayal' scenario which initiated this thread, it
  should not be permitted for equal-level ops to override each other
  in this manner.

  If the suspendor is of higher access than the operator attempting to
  remove the suspension or user, then the suspendor has authority,
  and the person attempting removal shouldn't be trying to do that
  anyway. :>

-- Amarande


Reply via email to