From 2f297034036055aaf37f86ece22723aedf8741bf Mon Sep 17 00:00:00 2001 From: Ash McKenzie Date: Sun, 10 Jun 2018 22:56:17 +1000 Subject: WIP --- app/models/snippet.rb | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'app/models/snippet.rb') diff --git a/app/models/snippet.rb b/app/models/snippet.rb index 644120453cf..4ee229e3013 100644 --- a/app/models/snippet.rb +++ b/app/models/snippet.rb @@ -35,18 +35,21 @@ class Snippet < ActiveRecord::Base delegate :name, :email, to: :author, prefix: true, allow_nil: true + before_save :ensure_secret_word_added_if_needed + validates :author, presence: true validates :title, presence: true, length: { maximum: 255 } validates :file_name, length: { maximum: 255 } validates :content, presence: true - validates :visibility_level, inclusion: { in: Gitlab::VisibilityLevel.values } + validates :visibility_level, inclusion: { in: Gitlab::VisibilityLevel.all_values } # Scopes scope :are_internal, -> { where(visibility_level: Snippet::INTERNAL) } scope :are_private, -> { where(visibility_level: Snippet::PRIVATE) } scope :are_public, -> { where(visibility_level: Snippet::PUBLIC) } + scope :are_secret, -> { where(visibility_level: Snippet::SECRET) } scope :public_and_internal, -> { where(visibility_level: [Snippet::PUBLIC, Snippet::INTERNAL]) } scope :fresh, -> { order("created_at DESC") } @@ -173,4 +176,12 @@ class Snippet < ActiveRecord::Base ::Project end end + + private + + def ensure_secret_word_added_if_needed + return if secret? && self.secret_word + + self.secret_word = secret? ? SecureRandom.hex : nil + end end -- cgit v1.2.1