From: Tom Hughes Date: Tue, 16 Nov 2010 00:50:12 +0000 (+0000) Subject: Implement automatic OAuth setup for Potlatch 2 X-Git-Tag: live~6339^2~35 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/0a52a4eb0776874607a321c05c65c656abb85b7e Implement automatic OAuth setup for Potlatch 2 --- diff --git a/app/models/client_application.rb b/app/models/client_application.rb index 9474a0137..09eec40d3 100644 --- a/app/models/client_application.rb +++ b/app/models/client_application.rb @@ -2,6 +2,7 @@ require 'oauth' class ClientApplication < ActiveRecord::Base belongs_to :user has_many :tokens, :class_name => "OauthToken" + has_many :access_tokens validates_presence_of :name, :url, :key, :secret validates_uniqueness_of :key before_validation_on_create :generate_keys @@ -53,6 +54,20 @@ class ClientApplication < ActiveRecord::Base RequestToken.create :client_application => self, :callback_url => self.token_callback_url end + def access_token_for_user(user) + unless token = access_tokens.find(:first, :conditions => { :user_id => user.id, :invalidated_at => nil }) + params = { :user => user } + + permissions.each do |p| + params[p] = true + end + + token = access_tokens.create(params) + end + + token + end + # the permissions that this client would like from the user def permissions ClientApplication.all_permissions.select { |p| self[p] } diff --git a/app/models/user.rb b/app/models/user.rb index ecf93b6f7..1db8adab7 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -203,4 +203,10 @@ class User < ActiveRecord::Base return score.to_i end + + ## + # return an oauth access token for a specified application + def access_token(application_key) + return ClientApplication.find_by_key(application_key).access_token_for_user(self) + end end diff --git a/app/views/site/_potlatch2.html.erb b/app/views/site/_potlatch2.html.erb index 705b9139c..5b0724763 100644 --- a/app/views/site/_potlatch2.html.erb +++ b/app/views/site/_potlatch2.html.erb @@ -3,6 +3,9 @@ <%= javascript_include_tag 'swfobject.js' %> + +<% token = @user.access_token(POTLATCH2_KEY) %> +