diff --git a/app/controllers/tokens_controller.rb b/app/controllers/tokens_controller.rb new file mode 100644 index 0000000..b61b6ca --- /dev/null +++ b/app/controllers/tokens_controller.rb @@ -0,0 +1,36 @@ +class TokensController < Doorkeeper::TokensController + # Overriding create action + # POST /oauth/token + def create + response = strategy.authorize + body = response.body + + if response.status == :ok + # User the resource_owner_id from token to identify the user + user = User.find(response.token.resource_owner_id) rescue nil + + unless user.nil? + ### If you want to render user with template + ### create an ActionController to render out the user + # ac = ActionController::Base.new() + # user_json = ac.render_to_string( template: 'api/users/me', locals: { user: user}) + # body[:user] = Oj.load(user_json) + + ### Or if you want to just append user using 'as_json' + body[:user] = { + id: user.id, + username: user.username + } + + end + end + + self.headers.merge! response.headers + self.response_body = body.to_json + self.status = response.status + + rescue Doorkeeper::Errors::DoorkeeperError => e + handle_token_exception e + end +end + \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index cbdf250..581484e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,5 +1,6 @@ Rails.application.routes.draw do use_doorkeeper do + controllers :tokens => 'tokens' skip_controllers :applications, :authorized_applications end