Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKamil Trzcinski <ayufan@ayufan.eu>2016-02-09 20:06:55 +0300
committerJames Edwards-Jones <jedwardsjones@gitlab.com>2017-02-01 01:53:57 +0300
commit5f7257c27dace1dcb9d3eb4732caf68f061a8d68 (patch)
treea00cfa51f1aa44ae3592d49c3232795d21d3fae4 /app/validators/certificate_validator.rb
parentc4c8ca04052aaf7d37c2335066381b536df68427 (diff)
Initial work on GitLab Pages update
Diffstat (limited to 'app/validators/certificate_validator.rb')
-rw-r--r--app/validators/certificate_validator.rb30
1 files changed, 30 insertions, 0 deletions
diff --git a/app/validators/certificate_validator.rb b/app/validators/certificate_validator.rb
new file mode 100644
index 00000000000..2cba5a435b7
--- /dev/null
+++ b/app/validators/certificate_validator.rb
@@ -0,0 +1,30 @@
+# UrlValidator
+#
+# Custom validator for private keys.
+#
+# class Project < ActiveRecord::Base
+# validates :certificate_key, certificate_key: true
+# end
+#
+class CertificateValidator < ActiveModel::EachValidator
+ def validate_each(record, attribute, value)
+ certificate = parse_certificate(value)
+ unless certificate
+ record.errors.add(attribute, "must be a valid PEM certificate")
+ end
+
+ if options[:intermediates]
+ unless certificate
+ record.errors.add(attribute, "certificate verification failed: missing intermediate certificates")
+ end
+ end
+ end
+
+ private
+
+ def parse_certificate(value)
+ OpenSSL::X509::Certificate.new(value)
+ rescue OpenSSL::X509::CertificateError
+ nil
+ end
+end