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
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.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
def update_modified_by_fields
self.created_at ||= Time.now
- self.owner ||= current_user.uuid if current_user
+ self.owner ||= current_default_owner
self.modified_at = Time.now
self.modified_by_user = current_user ? current_user.uuid : nil
self.modified_by_client = current_api_client ? current_api_client.uuid : nil
--- /dev/null
+class AddDefaultOwnerToUsers < ActiveRecord::Migration
+ def change
+ add_column :users, :default_owner, :string
+ end
+end
--- /dev/null
+class AddDefaultOwnerToApiClientAuthorizations < ActiveRecord::Migration
+ def change
+ add_column :api_client_authorizations, :default_owner, :string
+ end
+end
#
# It's strongly recommended to check this file into your version control system.
-ActiveRecord::Schema.define(:version => 20130319201431) do
+ActiveRecord::Schema.define(:version => 20130320000107) do
create_table "api_client_authorizations", :force => true do |t|
t.string "api_token", :null => false
t.datetime "expires_at"
t.datetime "created_at"
t.datetime "updated_at"
+ t.string "default_owner"
end
add_index "api_client_authorizations", ["api_client_id"], :name => "index_api_client_authorizations_on_api_client_id"
t.boolean "is_admin"
t.text "prefs"
t.datetime "updated_at"
+ t.string "default_owner"
end
add_index "users", ["created_at"], :name => "index_users_on_created_at"
Thread.current[:api_client]
end
+ def current_api_client_authorization
+ Thread.current[:api_client_authorization]
+ end
+
+ def current_default_owner
+ # owner uuid for newly created objects
+ ((current_api_client_authorization &&
+ current_api_client_authorization.default_owner)
+ ||
+ (current_user && current_user.default_owner)
+ ||
+ (current_user && current_user.uuid)
+ ||
+ nil)
+ end
+
# Where is the client connecting from?
def current_api_client_ip_address
Thread.current[:api_client_ip_address]