]> andersk Git - moira.git/commitdiff
don't allow a user to be deleted if it has reservations set
authordanw <danw>
Tue, 11 Jan 2000 19:50:25 +0000 (19:50 +0000)
committerdanw <danw>
Tue, 11 Jan 2000 19:50:25 +0000 (19:50 +0000)
server/qsetup.pc

index 86b00c06ebe56a6caa3770e7d6b14fdccfab9195..b398ca784ebbbc059a1bb6b37e0b23902644df9a 100644 (file)
@@ -94,17 +94,19 @@ int setup_dusr(struct query *q, char *argv[], client *cl)
 {
   EXEC SQL BEGIN DECLARE SECTION;
   int flag, id, cnt;
+  char resv[USERS_RESERVATIONS_SIZE];
   EXEC SQL END DECLARE SECTION;
 
   id = *(int *)argv[0];
 
-  /* For now, only allow users to be deleted if their status is 0 */
-  EXEC SQL SELECT status INTO :flag FROM users WHERE users_id = :id;
-  if (flag != 0 && flag != 4)
+  /* For now, only allow users to be deleted if their status is 0
+   * and we have no reservations about deleting them.
+   */
+  EXEC SQL SELECT status, reservations INTO :flag, :resv
+    FROM users WHERE users_id = :id;
+  if ((flag != 0 && flag != 4) || *resv)
     return MR_IN_USE;
 
-  EXEC SQL DELETE FROM quota WHERE entity_id = :id AND type = 'USER';
-  EXEC SQL DELETE FROM krbmap WHERE users_id = :id;
   EXEC SQL SELECT COUNT(member_id) INTO :cnt FROM imembers
     WHERE member_id = :id AND member_type = 'USER';
   if (cnt > 0)
@@ -127,6 +129,9 @@ int setup_dusr(struct query *q, char *argv[], client *cl)
     return MR_IN_USE;
   if (dbms_errno)
     return mr_errcode;
+
+  EXEC SQL DELETE FROM quota WHERE entity_id = :id AND type = 'USER';
+  EXEC SQL DELETE FROM krbmap WHERE users_id = :id;
   return MR_SUCCESS;
 }
 
This page took 0.062483 seconds and 5 git commands to generate.