class Doorkeeper::OAuth::AuthorizationRequest
def access_token
def access_token AccessToken.accessible.where(:application_id => client.id, :resource_owner_id => resource_owner.id).first end
def access_token_exists?
def access_token_exists? access_token.present? && access_token_scope_matches? end
def access_token_scope_matches?
def access_token_scope_matches? (access_token.scopes - scope.split(" ").map(&:to_sym)).empty? end
def authorize
def authorize create_authorization if valid? end
def build_uri
def build_uri uri = URI.parse(client.redirect_uri) yield uri uri.to_s end
def client
def client @client ||= Application.find_by_uid(client_id) end
def create_authorization
def create_authorization @grant = AccessGrant.create!( :application_id => client.id, :resource_owner_id => resource_owner.id, :expires_in => DEFAULT_EXPIRATION_TIME, :redirect_uri => redirect_uri, :scopes => scope ) end
def deny
def deny self.error = :access_denied end
def has_scope?
def has_scope? Doorkeeper.configuration.scopes.all.present? end
def has_state?
def has_state? state.present? end
def initialize(resource_owner, attributes)
def initialize(resource_owner, attributes) ATTRIBUTES.each { |attr| instance_variable_set("@#{attr}", attributes[attr]) } @resource_owner = resource_owner @grant = nil @scope ||= Doorkeeper.configuration.default_scope_string validate end
def invalid_redirect_uri
def invalid_redirect_uri build_uri do |uri| query = "error=#{error}" query << "&state=#{state}" if has_state? uri.query = query end end
def scopes
def scopes Doorkeeper.configuration.scopes.with_names(*scope.split(" ")) if has_scope? end
def success_redirect_uri
def success_redirect_uri build_uri do |uri| query = "code=#{token}" query << "&state=#{state}" if has_state? uri.query = query end end
def token
def token @grant.token end
def validate_attributes
def validate_attributes %w(response_type client_id redirect_uri).all? { |attr| send(attr).present? } end
def validate_client
def validate_client !!client end
def validate_redirect_uri
def validate_redirect_uri client.redirect_uri == redirect_uri end
def validate_response_type
def validate_response_type response_type == "code" end
def validate_scope
def validate_scope return true unless has_scope? scope.present? && scope !~ /[\n|\r|\t]/ && scope.split(" ").all? { |s| Doorkeeper.configuration.scopes.exists?(s) } end