Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Api::V1::UserController < Api::V1
- def auth
- user = User.enabled.find_by(["email iLike ?", email])
- if user.try(:authenticate, password)
- user.log! "Authenticated!"
- present user, serializer: Api::V1::Serializer::Auth
- else
- user.try :log!, "Failed Authentication Attempt!"
- fake_user = AuthFormErrorUser.new(email, password)
- present fake_user, serializer: Api::V1::Serializer::Auth, status: 401
- end
- end
- def signup
- user = User.new(signup_permitted)
- user.log "Created!"
- if user.save
- present user, serializer: Api::V1::Serializer::Auth
- else
- present user, status: 422, serializer: Api::V1::Serializer::Auth
- end
- end
- def update
- if_authenticated do
- user = authorized_entity
- if user.update_attributes(signup_permitted)
- user.log "User was updated"
- present user, serializer: Api::V1::Serializer::Auth
- else
- present user, status: 422, serializer: Api::V1::Serializer::Auth
- end
- end
- end
- def forgot_password
- user = User.enabled.find_by(["email iLike ?", email])
- if user
- SidekiqSwitcher.with_admin_sidekiq do
- UtilityMailer.forgot(user.id).try(:deliver_later)
- end
- user.log "Initiated forgot password"
- present user, serializer: Api::V1::Serializer::Auth
- else
- user.try :log!, "Failed Authentication Attempt!"
- User.new(signup_permitted).tap do |fake_user|
- if email.blank?
- fake_user.errors.add(:email, :blank)
- else
- fake_user.errors.add(:base, :no_match)
- end
- present fake_user, serializer: Api::V1::Serializer::Auth, status: 404
- end
- end
- end
- def reset_password
- user = User.enabled.find_by(perishable_token: perishable_token)
- if user
- user.password = password
- user.password_confirmation = password_confirmation
- if user.save && password.present?
- user.generate_perishable_token
- user.log "Password reset", perishable_token: perishable_token
- present user, serializer: Api::V1::Serializer::Auth
- else
- user.errors.add(:password, :blank) unless password.present?
- present user, status: 422, serializer: Api::V1::Serializer::Auth
- end
- else
- present User.new, serializer: Api::V1::Serializer::Auth, status: 422
- end
- end
- private
- def signup_permitted
- params.require(:user).permit(
- :email,
- :password,
- :password_confirmation,
- :first_name,
- :last_name
- )
- end
- def perishable_token
- params.require(:user).fetch(:perishable_token)
- end
- def email
- params.require(:user).fetch(:email)
- end
- def password
- params.require(:user).fetch(:password)
- end
- def password_confirmation
- params.require(:user).fetch(:password_confirmation)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement