/* k - create mailboxes in this hierarchy */
/* t - delete messages (set/clear \Deleted flag) */
+ if (ra & UA_DELETEALLOWED) {
+ strcat(rights, "t");
+ }
/* a - administer (perform SETACL/DELETEACL/GETACL/LISTRIGHTS) */
/* x - delete mailbox (DELETE mailbox, old mailbox name in RENAME) */
* the current room (returns 1 for yes, 0 for no)
*/
int CtdlDoIHavePermissionToDeleteMessagesFromThisRoom(void) {
- getuser(&CC->user, CC->curr_user);
- if ((CC->user.axlevel < 6)
- && (CC->user.usernum != CC->room.QRroomaide)
- && ((CC->room.QRflags & QR_MAILBOX) == 0)
- && (!(CC->internal_pgm))) {
- return(0);
- }
- return(1);
+ int ra;
+ CtdlRoomAccess(&CC->room, &CC->user, &ra, NULL);
+ if (ra & UA_DELETEALLOWED) return(1);
+ return(0);
}
+
/*
* Delete message from current room
*/
/* Force the properties of the Aide room */
if (!strcasecmp(roombuf->QRname, config.c_aideroom)) {
if (userbuf->axlevel >= 6) {
- retval = UA_KNOWN | UA_GOTOALLOWED | UA_POSTALLOWED;
+ retval = UA_KNOWN | UA_GOTOALLOWED | UA_POSTALLOWED | UA_DELETEALLOWED;
} else {
retval = 0;
}
}
/* For mailbox rooms, also check the namespace */
+ /* Also, mailbox owners can delete their messages */
if (roombuf->QRflags & QR_MAILBOX) {
if (userbuf->usernum == atol(roombuf->QRname)) {
- retval = retval | UA_KNOWN | UA_GOTOALLOWED | UA_POSTALLOWED;
+ retval = retval | UA_KNOWN | UA_GOTOALLOWED | UA_POSTALLOWED | UA_DELETEALLOWED;
}
/* An explicit match means the user belongs in this room */
if (vbuf.v_flags & V_ACCESS) {
- retval = retval | UA_KNOWN | UA_GOTOALLOWED | UA_POSTALLOWED;
+ retval = retval | UA_KNOWN | UA_GOTOALLOWED | UA_POSTALLOWED | UA_DELETEALLOWED;
}
}
if ( (userbuf->axlevel >= 6)
|| (userbuf->usernum == roombuf->QRroomaide)
) {
- retval = retval | UA_ADMINALLOWED;
+ retval = retval | UA_ADMINALLOWED | UA_DELETEALLOWED;
}
NEWMSG: /* By the way, we also check for the presence of new messages */