Sha256: 1a7b5cad10db682f144b0c7ac2b78cab24ea815443a64df5040cd189dafd3e03

Contents?: true

Size: 1.24 KB

Versions: 6

Compression:

Stored size: 1.24 KB

Contents

module {{namespace_module}}
  module Accounts
    module Update
      class Control
        include Shogun::Control
        include Accounts

        def initialize(payload:)
          @normalizer = Normalizer.new(raw: payload.to_hash)
          @validator = Validator.new(data: @normalizer)

          if @validator.valid?
            @session = Sessions::Model.find_by(id: @normalizer.session)
            @model = Model.find_by(id: @normalizer.id)
            @authorizer = Authorizer.new(requester: @session, resource: @model)

            case
            when @model && @authorizer.allowed?
              @model.update(@normalizer.to_hash)
              @presenter = Presenter.new(resource: @model, meta: @normalizer.as_meta)
              @denormalizer = Denormalizer.new(object: @presenter)
              @status = OK
            when @model && @authorizer.denied?
              @status = UNAUTHORIZED
            else
              @status = NOT_FOUND
            end
          else
            @presenters = Shogun::Presenters.new(resources: @validator.invalids, cast: Errors::Presenter)
            @denormalizer = Errors::Denormalizer.new(object: @presenters)
            @status = UNPROCESSABLE_ENTITY
          end
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
shogun-6.4.2 scaffold/new/project/lib/namespace/accounts/update/control.rb
shogun-6.4.1 scaffold/new/project/lib/namespace/accounts/update/control.rb
shogun-6.4.0 scaffold/new/project/lib/namespace/accounts/update/control.rb
shogun-6.3.0 scaffold/new/project/lib/namespace/accounts/update/control.rb
shogun-6.2.3 scaffold/new/project/lib/namespace/accounts/update/control.rb
shogun-6.2.2 scaffold/new/project/lib/namespace/accounts/update/control.rb