How to format a POST to create User with Basic HTTP Auth and Devise Rails Gem How to format a POST to create User with Basic HTTP Auth and Devise Rails Gem curl curl

How to format a POST to create User with Basic HTTP Auth and Devise Rails Gem


Basically this is just a matter of POSTing the proper data to the user creation route (run rake routes to see all the routes that devise creates for you once you have it properly installed). For example, I did this with one of my apps (using command line curl):

curl -H "Content-Type:application/json" -H "Accept:application/json" -d "{\"user\":{\"email\":\"jared@jared.com\", \"password\":\"super_secret_pass\", \"password_confirmation\":\"super_secret_pass\"}}" http://jared-dev/users

..and I get back:

{"status":"signed_in"}

..and just to confirm it worked:

irb(main):001:0> User.find_by_email('jared@jared.com')=> #<User id: 2, email: "jared@jared.com", encrypted_password: "$2a$10$QMBAcpKjUwoC.pcRYt88a.vA0oq58jx0lagbgY298wjf...", password_salt: "$2a$10$QMBAcpKjUwoC.pcRYt88a.", reset_password_token: nil, remember_token: nil, remember_created_at: nil, sign_in_count: 1, current_sign_in_at: "2011-03-15 19:49:47", last_sign_in_at: "2011-03-15 19:49:47", current_sign_in_ip: "127.0.1.1", last_sign_in_ip: "127.0.1.1", authentication_token: "yW37HrKUigwvSEDmXaB4", created_at: "2011-03-15 19:49:47", updated_at: "2011-03-15 19:49:47">

In this example, I'm posting JSON data because I think it's easier to read, but you can get curl to do standard formdata as well. I had to modify my application controller to support JSON for auth, according to this post.

These command line options correspond to CURLOPT_HTTPHEADER, CURLOPT_POST, and CURLOPT_POSTFIELDS set via curl_easy_setopt when using the libcurl easy interface.

Hope that helps.