Add allow_self option to require confirmation from another user.
Add restrict_to option to require confirmation from a user in a group.
Add expire_after option to change the default expiry.
Split apart large methods.