X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/b26adef905a900bb8d171e4fcb37098e4d7718b2..0a52a4eb0776874607a321c05c65c656abb85b7e:/app/models/client_application.rb 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] }