Guest User

Untitled

a guest
Dec 14th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.84 KB | None | 0 0
  1. # This controller's job is to exchange twitter credentials for Shortmail credentials
  2. class TwitterReverseAuthController < ApplicationController
  3.  
  4. def api_key_exchange
  5. auth = OauthAuthenticator.new(params)
  6. if auth.is_valid?
  7. render :json => { :api_key => auth.response[:api_key] }
  8. else
  9. render :json => {
  10. :error => auth.response[:errors].full_messages.join(", "),
  11. :status => :unprocessable_entity
  12. }
  13. end
  14. end
  15.  
  16.  
  17. class OauthAuthenticate < OpenStruct
  18. #magic_attrs: screen_name,oauth_token,oauth_secret,token,description
  19. #public
  20. def is_valid?
  21. self.validate_device
  22. self.valid?
  23. end
  24. def response
  25. {:errors => self.errors, :api_key =>self.device && self.device.api_key}
  26. end
  27.  
  28. #private
  29.  
  30. include ActiveModel::Validations; def to_model; self; end
  31.  
  32. def find_user
  33. User.by_screen_name(screen_name).
  34. where(:oauth_token => oauth_token,
  35. :oauth_secret => oauth_secret).first
  36. end
  37. def find_device
  38. Device.find_or_create_by_token({
  39. :token => token,
  40. :description => description,
  41. :user_id => user.id
  42. })
  43. end
  44.  
  45. validates_presence_of :screen_name, :oauth_token, :oauth_secret, :message => "required"
  46. def validate_user
  47. return self unless valid?
  48. self.user = find_user
  49. self.errors.add(:user, 'not found') unless user
  50. return self
  51. end
  52. def validate_device
  53. return self unless validate_user && valid?
  54. self.device = find_device
  55. unless device
  56. self.errors.add(:device, 'not found')
  57. device.errors.each do |k,m|
  58. self.errors.add(k,m)
  59. end unless device.saved?
  60. end
  61. return self
  62. end
  63. end
  64. end
Add Comment
Please, Sign In to add comment