update: add user register validation, refactor donation controller logic