Sha256: dd6216c849af1c529ba535e9384e4c742f5817c47a2a24aece17b628c9c14a72

Contents?: true

Size: 958 Bytes

Versions: 5

Compression:

Stored size: 958 Bytes

Contents

# frozen_string_literal: true

module Devise
  module Api
    module ResourceOwnerService
      class SignUp < Devise::Api::BaseService
        option :params, type: Types::Hash
        option :resource_class, type: Types::Class

        def call
          ActiveRecord::Base.transaction do
            resource_owner = yield create_resource_owner
            devise_api_token = yield call_create_devise_api_token_service(resource_owner)

            Success(devise_api_token)
          end
        end

        private

        def create_resource_owner
          resource_owner = resource_class.new(params)

          return Success(resource_owner) if resource_owner.save

          Failure(error: :resource_owner_create_error, record: resource_owner)
        end

        def call_create_devise_api_token_service(resource_owner)
          Devise::Api::TokensService::Create.new(resource_owner: resource_owner).call
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
devise-api-0.2.0 app/services/devise/api/resource_owner_service/sign_up.rb
devise-api-0.1.3 app/services/devise/api/resource_owner_service/sign_up.rb
devise-api-0.1.2 app/services/devise/api/resource_owner_service/sign_up.rb
devise-api-0.1.1 app/services/devise/api/resource_owner_service/sign_up.rb
devise-api-0.1.0 app/services/devise/api/resource_owner_service/sign_up.rb