completed (untested) user_resource.clj