Advertisement
Guest User

Untitled

a guest
Jul 5th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.76 KB | None | 0 0
  1. class Api::V1::UserController < Api::V1
  2. def auth
  3. user = User.enabled.find_by(["email iLike ?", email])
  4. if user.try(:authenticate, password)
  5. user.log! "Authenticated!"
  6. present user, serializer: Api::V1::Serializer::Auth
  7. else
  8. user.try :log!, "Failed Authentication Attempt!"
  9. fake_user = AuthFormErrorUser.new(email, password)
  10. present fake_user, serializer: Api::V1::Serializer::Auth, status: 401
  11. end
  12. end
  13.  
  14. def signup
  15. user = User.new(signup_permitted)
  16. user.log "Created!"
  17. if user.save
  18. present user, serializer: Api::V1::Serializer::Auth
  19. else
  20. present user, status: 422, serializer: Api::V1::Serializer::Auth
  21. end
  22. end
  23.  
  24. def update
  25. if_authenticated do
  26. user = authorized_entity
  27. if user.update_attributes(signup_permitted)
  28. user.log "User was updated"
  29. present user, serializer: Api::V1::Serializer::Auth
  30. else
  31. present user, status: 422, serializer: Api::V1::Serializer::Auth
  32. end
  33. end
  34. end
  35.  
  36. def forgot_password
  37. user = User.enabled.find_by(["email iLike ?", email])
  38. if user
  39. SidekiqSwitcher.with_admin_sidekiq do
  40. UtilityMailer.forgot(user.id).try(:deliver_later)
  41. end
  42.  
  43. user.log "Initiated forgot password"
  44. present user, serializer: Api::V1::Serializer::Auth
  45. else
  46. user.try :log!, "Failed Authentication Attempt!"
  47. User.new(signup_permitted).tap do |fake_user|
  48. if email.blank?
  49. fake_user.errors.add(:email, :blank)
  50. else
  51. fake_user.errors.add(:base, :no_match)
  52. end
  53. present fake_user, serializer: Api::V1::Serializer::Auth, status: 404
  54. end
  55. end
  56. end
  57.  
  58. def reset_password
  59. user = User.enabled.find_by(perishable_token: perishable_token)
  60. if user
  61. user.password = password
  62. user.password_confirmation = password_confirmation
  63. if user.save && password.present?
  64. user.generate_perishable_token
  65. user.log "Password reset", perishable_token: perishable_token
  66. present user, serializer: Api::V1::Serializer::Auth
  67. else
  68. user.errors.add(:password, :blank) unless password.present?
  69. present user, status: 422, serializer: Api::V1::Serializer::Auth
  70. end
  71. else
  72. present User.new, serializer: Api::V1::Serializer::Auth, status: 422
  73. end
  74. end
  75.  
  76. private
  77.  
  78. def signup_permitted
  79. params.require(:user).permit(
  80. :email,
  81. :password,
  82. :password_confirmation,
  83. :first_name,
  84. :last_name
  85. )
  86. end
  87.  
  88. def perishable_token
  89. params.require(:user).fetch(:perishable_token)
  90. end
  91.  
  92. def email
  93. params.require(:user).fetch(:email)
  94. end
  95.  
  96. def password
  97. params.require(:user).fetch(:password)
  98. end
  99.  
  100. def password_confirmation
  101. params.require(:user).fetch(:password_confirmation)
  102. end
  103. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement