Sha256: 5b11119969a03df3dc6e9108131416b708de4f117e8db6d3edc159f8767ad195

Contents?: true

Size: 1.16 KB

Versions: 3

Compression:

Stored size: 1.16 KB

Contents

# frozen_string_literal: true

module Decidim
  module Doorkeeper
    # A controller to expose a simple JSON API so OAuth clients can get the user's information.
    class CredentialsController < ApplicationController
      skip_authorization_check
      before_action :doorkeeper_authorize!
      respond_to :json

      def me
        respond_with public_data
      end

      private

      def public_data
        {
          id: current_resource_owner.id,
          email: current_resource_owner.email,
          name: current_resource_owner.name,
          nickname: current_resource_owner.nickname,
          image: avatar_url
        }
      end

      def current_resource_owner
        @current_resource_owner ||= Decidim::User.find(doorkeeper_token.resource_owner_id) if doorkeeper_token
      end

      def avatar_url
        avatar_url = current_resource_owner.avatar_url
        return unless avatar_url

        unless avatar_url.match?(%r{/https?://})
          request_uri = URI.parse(request.url)
          request_uri.path = avatar_url
          request_uri.query = nil
          avatar_url = request_uri.to_s
        end

        avatar_url
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
decidim-core-0.11.2 app/controllers/decidim/doorkeeper/credentials_controller.rb
decidim-core-0.11.1 app/controllers/decidim/doorkeeper/credentials_controller.rb
decidim-core-0.11.0.pre1 app/controllers/decidim/doorkeeper/credentials_controller.rb