" makes sure id_to_delete is one they are allowed to delete before it deletes it."
this is the key, you should not try to prevent people from seeing the userid so they cannot issue the delete command, that is pointless because your admin function is built to enable them to issue delete commands.
You should make sure that the commands they are allowed to delete the userid's they want to delete.
And it pays to not actually delete the rows, but to mark them as 'inactive'.
That way when someone 'deletes' the wrong records, you can run a simple query to reset the records from 'inactive' to 'active' instead of restoring the backup from tape.