add create method. refs #1406
[arvados.git] / app / controllers / application_controller.rb
index 3d96706d3b16d9737e7e3e6e8eff3fb36028ca73..b9d9743bdb059744ba3d1c45471f592c650ebada 100644 (file)
@@ -131,8 +131,8 @@ class ApplicationController < ActionController::Base
     if @attrs.is_a? String
       @attrs = uncamelcase_hash_keys(Oj.load @attrs)
     end
-    if @attrs.nil?
-      raise "no #{resource_name} (or #{resource_name.camelcase(:lower)}) provided with request #{params.inspect}"
+    unless @attrs.is_a? Hash
+      raise "no #{resource_name} (or #{resource_name.camelcase(:lower)}) hash provided with request #{params.inspect}"
     end
     %w(created_at modified_by_client modified_by_user modified_at).each do |x|
       @attrs.delete x
@@ -168,6 +168,7 @@ class ApplicationController < ActionController::Base
         if api_client_auth
           session[:user_id] = api_client_auth.user.id
           session[:api_client_uuid] = api_client_auth.api_client.uuid
+          session[:api_client_authorization_id] = api_client_auth.id
           user = api_client_auth.user
           api_client = api_client_auth.api_client
         end
@@ -176,16 +177,22 @@ class ApplicationController < ActionController::Base
         api_client = ApiClient.
           where('uuid=?',session[:api_client_uuid]).
           first rescue nil
+        api_client_auth = ApiClientAuthorization.
+          find session[:api_client_authorization_id]
       end
       Thread.current[:api_client_trusted] = session[:api_client_trusted]
       Thread.current[:api_client_ip_address] = remote_ip
+      Thread.current[:api_client_authorization] = api_client_auth
+      Thread.current[:api_client_uuid] = api_client && api_client.uuid
       Thread.current[:api_client] = api_client
       Thread.current[:user] = user
       yield
     ensure
       Thread.current[:api_client_trusted] = nil
       Thread.current[:api_client_ip_address] = nil
+      Thread.current[:api_client_authorization] = nil
       Thread.current[:api_client_uuid] = nil
+      Thread.current[:api_client] = nil
       Thread.current[:user] = nil
     end
   end