[buddypress-trac] [BuddyPress Trac] #8448: Add new table to store nonmember opt-outs.

buddypress-trac noreply at wordpress.org
Fri Mar 26 14:20:45 UTC 2021

#8448: Add new table to store nonmember opt-outs.
 Reporter:  dcavins                 |       Owner:  (none)
     Type:  enhancement             |      Status:  new
 Priority:  normal                  |   Milestone:  8.0.0
Component:  Core                    |     Version:  7.2.0
 Severity:  normal                  |  Resolution:
 Keywords:  has-patch dev-feedback  |

Comment (by boonebgorges):

 Thanks, @dcavins ! General approach looks good.

 It looks like `'order_by'` is not properly sanitized against SQLi. We
 either need to check against a list of allowed values (column names should
 make this fairly easy) or run through a SQL-escaping function.

 For the record, Invite Anyone uses a different approach. Each row in the
 invitation table has an 'invitee_email' column and an 'opt_out' column.
 When someone opts out of notifications, *all* rows matching the email in
 question are flagged as 'opt_out=1'. Then, when deciding whether to send
 future notifications, IA checks to see whether there are any rows in the
 invitations table `WHERE invitee_email = %s and opt_out = 1`. One fewer
 database table, but it also makes the tables and the logic a bit more
 confusing. So your approach looks good.

 Regarding @imath's suggestion: if the emails are encoded, it's no longer
 useful to have an admin panel. And this means there's no obvious way to
 "undo" or delete an opt-out, at least not as pictured. As I think about
 it, it seems that GDPR concerns, and a more general gut feeling about
 privacy, suggest that we might not the kind of admin panel you've built.
 Users do not choose to receive invitations, and if a recipient chooses to
 opt out of future notifications, it's reasonable to assume that they also
 don't want the site admin to be able to see their email address.

 We would then need a different kind of "undo" or "delete" mechanism.
 Something like: you manually enter an email address, and let the system
 hash it and compare against stored values, just like we do with passwords.
 @imath Did you build anything similar for Réception?

Ticket URL: <https://buddypress.trac.wordpress.org/ticket/8448#comment:2>
BuddyPress Trac <http://buddypress.org/>
BuddyPress Trac

More information about the buddypress-trac mailing list