2018-06-27 12:20:23 -04:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2018-06-01 07:43:53 -04:00
|
|
|
# PublicUrlValidator
|
|
|
|
#
|
|
|
|
# Custom validator for URLs. This validator works like UrlValidator but
|
|
|
|
# it blocks by default urls pointing to localhost or the local network.
|
|
|
|
#
|
|
|
|
# This validator accepts the same params UrlValidator does.
|
|
|
|
#
|
|
|
|
# Example:
|
|
|
|
#
|
|
|
|
# class User < ActiveRecord::Base
|
|
|
|
# validates :personal_url, public_url: true
|
|
|
|
#
|
|
|
|
# validates :ftp_url, public_url: { protocols: %w(ftp) }
|
|
|
|
#
|
|
|
|
# validates :git_url, public_url: { allow_localhost: true, allow_local_network: true}
|
|
|
|
# end
|
|
|
|
#
|
|
|
|
class PublicUrlValidator < UrlValidator
|
|
|
|
private
|
|
|
|
|
|
|
|
def default_options
|
|
|
|
# By default block all urls pointing to localhost or the local network
|
|
|
|
super.merge(allow_localhost: false,
|
|
|
|
allow_local_network: false)
|
|
|
|
end
|
|
|
|
end
|