diff options
Diffstat (limited to 'app/models/snippet.rb')
-rw-r--r-- | app/models/snippet.rb | 13 |
1 files changed, 12 insertions, 1 deletions
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 |