openstreetmap-website/app/controllers/oauth_controller.rb
Tom Hughes f9ae6d252f Drop the slim layout
The slim layout is not really needed since the redesign as the
pages it was used for in the OAuth flow now have less chrome and
work fine on small screens with the normal layout.

Fixes #689
2014-02-16 16:03:00 +00:00

79 lines
2.2 KiB
Ruby

require 'oauth/controllers/provider_controller'
class OauthController < ApplicationController
include OAuth::Controllers::ProviderController
layout 'site'
def login_required
authorize_web
set_locale
require_user
end
def user_authorizes_token?
any_auth = false
@token.client_application.permissions.each do |pref|
if params[pref]
@token.write_attribute(pref, true)
any_auth ||= true
else
@token.write_attribute(pref, false)
end
end
any_auth
end
def revoke
@token = current_user.oauth_tokens.find_by_token params[:token]
if @token
@token.invalidate!
flash[:notice] = t('oauth.revoke.flash', :application => @token.client_application.name)
end
redirect_to oauth_clients_url(:display_name => @token.user.display_name)
end
protected
def oauth1_authorize
unless @token
render :action=>"authorize_failure"
return
end
unless @token.invalidated?
if request.post?
if user_authorizes_token?
@token.authorize!(current_user)
if @token.oauth10?
callback_url = params[:oauth_callback] || @token.client_application.callback_url
else
callback_url = @token.oob? ? @token.client_application.callback_url : @token.callback_url
end
@redirect_url = URI.parse(callback_url) unless callback_url.blank?
unless @redirect_url.to_s.blank?
@redirect_url.query = @redirect_url.query.blank? ?
"oauth_token=#{@token.token}" :
@redirect_url.query + "&oauth_token=#{@token.token}"
unless @token.oauth10?
@redirect_url.query += "&oauth_verifier=#{@token.verifier}"
end
redirect_to @redirect_url.to_s
else
render :action => "authorize_success"
end
else
@token.invalidate!
@message = t("oauth.oauthorize_failure.denied", :app_name => @token.client_application.name)
render :action => "authorize_failure"
end
end
else
@message = t "oauth.oauthorize_failure.invalid"
render :action => "authorize_failure"
end
end
end