diff --git a/app/controllers/identities_controller.rb b/app/controllers/identities_controller.rb new file mode 100644 index 000000000..88d112dd4 --- /dev/null +++ b/app/controllers/identities_controller.rb @@ -0,0 +1,7 @@ +class IdentitiesController < ApplicationController + disallow_account_scope + + def show + @identity = Current.identity + end +end diff --git a/app/views/identities/_account.json.jbuilder b/app/views/identities/_account.json.jbuilder new file mode 100644 index 000000000..d3954ec2f --- /dev/null +++ b/app/views/identities/_account.json.jbuilder @@ -0,0 +1,4 @@ +json.cache! account do + json.(account, :id, :name, :external_account_id) + json.created_at account.created_at.utc +end diff --git a/app/views/identities/show.json.jbuilder b/app/views/identities/show.json.jbuilder new file mode 100644 index 000000000..ce74cb74d --- /dev/null +++ b/app/views/identities/show.json.jbuilder @@ -0,0 +1,6 @@ +json.accounts @identity.users do |user| + json.partial! "identities/account", account: user.account + json.user do + json.partial! "users/user", user: user + end +end diff --git a/config/routes.rb b/config/routes.rb index 19358cb9d..805b89f38 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -163,6 +163,8 @@ Rails.application.routes.draw do resource :landing + resource :identity, only: :show + namespace :my do resources :access_tokens resources :pins diff --git a/test/controllers/api_test.rb b/test/controllers/api_test.rb index 9088497a8..3a4c55aae 100644 --- a/test/controllers/api_test.rb +++ b/test/controllers/api_test.rb @@ -70,6 +70,14 @@ class ApiTest < ActionDispatch::IntegrationTest assert_equal users(:david).name, @response.parsed_body["name"] end + test "get identity" do + identity = identities(:david) + + get identity_path(format: :json), env: @davids_bearer_token + assert_response :success # Fix 302 redirect + assert_equal identity.accounts.count, @response.parsed_body["accounts"].count + end + private def bearer_token_env(token) { "HTTP_AUTHORIZATION" => "Bearer #{token}" }