10231: add keep_cache_ram in runtime_constraints
[arvados.git] / services / api / app / middlewares / arvados_api_token.rb
index 24d013c6eafa8114d59d3230a5a215267a75a456..d8c04a1adbfcd0512bdbf38a4225081709ca2de8 100644 (file)
@@ -1,10 +1,19 @@
+# Perform api_token checking very early in the request process.  We want to do
+# this in the Rack stack instead of in ApplicationController because
+# websockets needs access to authentication but doesn't use any of the rails
+# active dispatch infrastructure.
 class ArvadosApiToken
+
+  # Create a new ArvadosApiToken handler
+  # +app+  The next layer of the Rack stack.
   def initialize(app = nil, options = nil)
     @app = app if app.respond_to?(:call)
   end
 
   def call env
-    # first, clean up just in case
+    # First, clean up just in case we have a multithreaded server and thread
+    # local variables are still set from a prior request.  Also useful for
+    # tests that call this code to set up the environment.
     Thread.current[:api_client_ip_address] = nil
     Thread.current[:api_client_authorization] = nil
     Thread.current[:api_client_uuid] = nil
@@ -22,7 +31,7 @@ class ArvadosApiToken
     supplied_token =
       params["api_token"] ||
       params["oauth_token"] ||
-      env["HTTP_AUTHORIZATION"].andand.match(/OAuth2 ([a-z0-9]+)/).andand[1]
+      env["HTTP_AUTHORIZATION"].andand.match(/OAuth2 ([a-zA-Z0-9]+)/).andand[1]
     if supplied_token
       api_client_auth = ApiClientAuthorization.
         includes(:api_client, :user).