summaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-11-27 11:51:46 +0200
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-11-27 11:51:46 +0200
commitfa7d62494a24584c0d27d52344aae8e382304936 (patch)
treecaa8f0f35123e31c4c9e172f99b7f723f355cd6d /app/models
parent9aaf478f10993ac134bf86546c95dbb4284f9f5f (diff)
parentd9bb4230cc3aa161876df821c34d8e9c53d2e7a6 (diff)
downloadgitlab-ce-fa7d62494a24584c0d27d52344aae8e382304936.tar.gz
Merge branch 'authenticated_public_mode' of https://github.com/jhollingsworth/gitlabhq into feature/internal_projects
Conflicts: app/models/project.rb Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Diffstat (limited to 'app/models')
-rw-r--r--app/models/ability.rb8
-rw-r--r--app/models/project.rb16
2 files changed, 17 insertions, 7 deletions
diff --git a/app/models/ability.rb b/app/models/ability.rb
index 85476089145..6df56eed5b8 100644
--- a/app/models/ability.rb
+++ b/app/models/ability.rb
@@ -29,7 +29,7 @@ class Ability
nil
end
- if project && project.public
+ if project && project.public?
[
:read_project,
:read_wiki,
@@ -71,7 +71,7 @@ class Ability
rules << project_guest_rules
end
- if project.public?
+ if project.public? || project.internal?
rules << public_project_rules
end
@@ -89,7 +89,7 @@ class Ability
def public_project_rules
project_guest_rules + [
:download_code,
- :fork_project,
+ :fork_project
]
end
@@ -145,7 +145,7 @@ class Ability
def project_admin_rules
project_master_rules + [
:change_namespace,
- :change_public_mode,
+ :change_visibility_level,
:rename_project,
:remove_project
]
diff --git a/app/models/project.rb b/app/models/project.rb
index 2406b3d5dd3..794f9be4bdf 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -14,24 +14,25 @@
# merge_requests_enabled :boolean default(TRUE), not null
# wiki_enabled :boolean default(TRUE), not null
# namespace_id :integer
-# public :boolean default(FALSE), not null
# issues_tracker :string(255) default("gitlab"), not null
# issues_tracker_id :string(255)
# snippets_enabled :boolean default(TRUE), not null
# last_activity_at :datetime
# imported :boolean default(FALSE), not null
# import_url :string(255)
+# visibility_level :integer default(0), not null
#
class Project < ActiveRecord::Base
include Gitlab::ShellAdapter
+ include Gitlab::VisibilityLevel
extend Enumerize
ActsAsTaggableOn.strict_case_match = true
attr_accessible :name, :path, :description, :issues_tracker, :label_list,
:issues_enabled, :wall_enabled, :merge_requests_enabled, :snippets_enabled, :issues_tracker_id,
- :wiki_enabled, :public, :import_url, :last_activity_at, as: [:default, :admin]
+ :wiki_enabled, :visibility_level, :import_url, :last_activity_at, as: [:default, :admin]
attr_accessible :namespace_id, :creator_id, as: :admin
@@ -108,7 +109,8 @@ class Project < ActiveRecord::Base
scope :sorted_by_activity, -> { reorder("projects.last_activity_at DESC") }
scope :personal, ->(user) { where(namespace_id: user.namespace_id) }
scope :joined, ->(user) { where("namespace_id != ?", user.namespace_id) }
- scope :public_only, -> { where(public: true) }
+ scope :public_only, -> { where(visibility_level: PUBLIC) }
+ scope :public_or_internal_only, ->(user) { where("visibility_level IN (:levels)", levels: user ? [ INTERNAL, PUBLIC ] : [ PUBLIC ]) }
enumerize :issues_tracker, in: (Gitlab.config.issues_tracker.keys).append(:gitlab), default: :gitlab
@@ -140,6 +142,10 @@ class Project < ActiveRecord::Base
where(path: id, namespace_id: nil).last
end
end
+
+ def visibility_levels
+ Gitlab::VisibilityLevel.options
+ end
end
def team
@@ -456,4 +462,8 @@ class Project < ActiveRecord::Base
@default_branch = nil
default_branch
end
+
+ def visibility_level_field
+ visibility_level
+ end
end