$Log$
+ Revision 573.110 2001/03/10 17:29:07 ajc
+ * Implement proper access control for deleting messages from IMAP
+
Revision 573.109 2001/03/07 04:02:27 ajc
* Fixed some small IMAP bugs
Fri Jul 10 1998 Art Cancro <ajc@uncensored.citadel.org>
* Initial CVS import
+
striplt(flag);
if (!strcasecmp(flag, "\\Deleted")) {
+ if (CtdlDoIHavePermissionToDeleteMessagesFromThisRoom()) {
bits_to_twiddle |= IMAP_DELETED;
+ }
}
}
+/*
+ * Check whether the current user has permission to delete messages from
+ * the current room (returns 1 for yes, 0 for no)
+ */
+int CtdlDoIHavePermissionToDeleteMessagesFromThisRoom(void) {
+ getuser(&CC->usersupp, CC->curr_user);
+ if ((CC->usersupp.axlevel < 6)
+ && (CC->usersupp.usernum != CC->quickroom.QRroomaide)
+ && ((CC->quickroom.QRflags & QR_MAILBOX) == 0)
+ && (!(CC->internal_pgm))) {
+ return(0);
+ }
+ return(1);
+}
+
+
+
/*
* Delete message from current room
*/
long delnum;
int num_deleted;
- getuser(&CC->usersupp, CC->curr_user);
- if ((CC->usersupp.axlevel < 6)
- && (CC->usersupp.usernum != CC->quickroom.QRroomaide)
- && ((CC->quickroom.QRflags & QR_MAILBOX) == 0)
- && (!(CC->internal_pgm))) {
+ if (CtdlDoIHavePermissionToDeleteMessagesFromThisRoom() == 0) {
cprintf("%d Higher access required.\n",
ERROR + HIGHER_ACCESS_REQUIRED);
return;
int do_proto, /* do Citadel protocol responses? */
int crlf);
int CtdlCopyMsgToRoom(long msgnum, char *dest);
+int CtdlDoIHavePermissionToDeleteMessagesFromThisRoom(void);