class Doorkeeper::OAuth::PasswordAccessTokenRequest

def authorize

def authorize
  validate
  @response = if valid?
    issue_token
    TokenResponse.new access_token
  else
    ErrorResponse.from_request self
  end
end

def initialize(server, client, resource_owner, parameters = {})

def initialize(server, client, resource_owner, parameters = {})
  @server          = server
  @resource_owner  = resource_owner
  @client          = client
  @original_scopes = parameters[:scope]
end

def issue_token

def issue_token
  @access_token = Doorkeeper::AccessToken.create!({
    :application_id     => client.id,
    :resource_owner_id  => resource_owner.id,
    :scopes             => scopes.to_s,
    :expires_in         => server.access_token_expires_in,
    :use_refresh_token  => server.refresh_token_enabled?
  })
end

def scopes

def scopes
  @scopes ||= if @original_scopes.present?
    Doorkeeper::OAuth::Scopes.from_string(@original_scopes)
  else
    server.default_scopes
  end
end

def valid?

def valid?
  self.error.nil?
end

def validate_client

def validate_client
  !!client
end

def validate_resource_owner

def validate_resource_owner
  !!resource_owner
end

def validate_scopes

def validate_scopes
  return true unless @original_scopes.present?
  ScopeChecker.valid?(@original_scopes, @server.scopes)
end