Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Api::V1::PhoneController < ApiController
- before_action :verify_request_availability, only: :request_signature_code
- before_action :verify_retries_count, only: :verify_signature_code
- def request_signature_code
- @vc = object.verification_codes.create!
- render json: @vc.code
- end
- def verify_signature_code
- vcs = object.verification_codes.where(code: params[:code])
- if vcs.present?
- create_user
- vcs.destroy_all
- render json: :ok
- else
- object.verification_codes.last.increment!(:retries)
- render json: :wrong_code, status: 403
- end
- end
- private
- def create_user
- @user = User.new
- @user.skip_password = true
- end
- def verify_request_availability
- return true if object.verification_codes.blank?
- unless object.verification_codes.last.next_request_time < DateTime.now
- timediff = object.verification_codes.last.next_request_time - DateTime.now
- raise KontrollerBasedException, timediff
- end
- end
- def verify_retries_count
- return true if object.verification_codes.blank?
- raise KontrollerBasedException, 'Нужен новый код' if object.verification_codes.last.retries >= 3
- end
- def object
- UnauthorizedToken.find_or_create_by(token: request.ip)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement