Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
5551ccd7
G
gitlab-foss
项目概览
李少辉-开发者
/
gitlab-foss
通知
15
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gitlab-foss
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
5551ccd7
编写于
3月 02, 2016
作者:
F
Felipe Artur
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Code improvements
上级
f2a9ee25
变更
10
显示空白变更内容
内联
并排
Showing
10 changed file
with
42 addition
and
33 deletion
+42
-33
app/controllers/groups_controller.rb
app/controllers/groups_controller.rb
+2
-2
app/controllers/users_controller.rb
app/controllers/users_controller.rb
+10
-0
app/finders/groups_finder.rb
app/finders/groups_finder.rb
+2
-11
app/helpers/groups_helper.rb
app/helpers/groups_helper.rb
+1
-1
app/models/ability.rb
app/models/ability.rb
+11
-7
app/models/concerns/shared_scopes.rb
app/models/concerns/shared_scopes.rb
+8
-0
app/models/group.rb
app/models/group.rb
+5
-5
app/models/project.rb
app/models/project.rb
+1
-2
db/migrate/20160301124843_add_visibility_level_to_groups.rb
db/migrate/20160301124843_add_visibility_level_to_groups.rb
+1
-4
db/schema.rb
db/schema.rb
+1
-1
未找到文件。
app/controllers/groups_controller.rb
浏览文件 @
5551ccd7
...
...
@@ -9,7 +9,7 @@ class GroupsController < Groups::ApplicationController
before_action
:group
,
except:
[
:index
,
:new
,
:create
]
# Authorize
before_action
:authorize_read_group!
,
except:
[
:index
,
:
show
,
:new
,
:create
,
:autocomple
te
]
before_action
:authorize_read_group!
,
except:
[
:index
,
:
new
,
:crea
te
]
before_action
:authorize_admin_group!
,
only:
[
:edit
,
:update
,
:destroy
,
:projects
]
before_action
:authorize_create_group!
,
only:
[
:new
,
:create
]
...
...
@@ -105,7 +105,7 @@ class GroupsController < Groups::ApplicationController
# Dont allow unauthorized access to group
def
authorize_read_group!
unless
@group
and
(
@projects
.
present?
or
can?
(
current_user
,
:read_group
,
@group
)
)
unless
can?
(
current_user
,
:read_group
,
@group
)
if
current_user
.
nil?
return
authenticate_user!
else
...
...
app/controllers/users_controller.rb
浏览文件 @
5551ccd7
...
...
@@ -3,6 +3,16 @@ class UsersController < ApplicationController
before_action
:set_user
def
show
<<<<<<<
HEAD
=======
@contributed_projects
=
contributed_projects
.
joined
(
@user
).
reject
(
&
:forked?
)
@projects
=
PersonalProjectsFinder
.
new
(
@user
).
execute
(
current_user
)
@projects
=
@projects
.
page
(
params
[
:page
]).
per
(
PER_PAGE
)
@groups
=
@user
.
groups
.
order_id_desc
>>>>>>>
Code
improvements
respond_to
do
|
format
|
format
.
html
...
...
app/finders/groups_finder.rb
浏览文件 @
5551ccd7
class
GroupsFinder
def
execute
(
current_user
=
nil
)
segments
=
all_groups
(
current_user
)
if
segments
.
length
>
1
...
...
@@ -15,17 +14,9 @@ class GroupsFinder
def
all_groups
(
current_user
)
if
current_user
[
current_user
.
authorized_groups
,
public_and_internal_groups
]
[
current_user
.
authorized_groups
,
Group
.
unscoped
.
public_and_internal_only
]
else
[
Group
.
public_only
]
end
[
Group
.
unscoped
.
public_only
]
end
def
public_groups
Group
.
unscoped
.
public_only
end
def
public_and_internal_groups
Group
.
unscoped
.
public_and_internal_only
end
end
app/helpers/groups_helper.rb
浏览文件 @
5551ccd7
...
...
@@ -28,7 +28,7 @@ module GroupsHelper
group
=
Group
.
find_by
(
path:
group
)
end
if
group
&&
group
.
avatar
.
present?
if
group
&&
can?
(
current_user
,
:read_group
,
group
)
&&
group
.
avatar
.
present?
group
.
avatar
.
url
else
'no_group_avatar.png'
...
...
app/models/ability.rb
浏览文件 @
5551ccd7
...
...
@@ -83,7 +83,7 @@ class Ability
subject
.
group
end
if
group
&&
group
.
p
rojects
.
public_only
.
any
?
if
group
&&
group
.
p
ublic
?
[
:read_group
]
else
[]
...
...
@@ -271,16 +271,13 @@ class Ability
def
group_abilities
(
user
,
group
)
rules
=
[]
if
user
.
admin?
||
group
.
users
.
include?
(
user
)
||
ProjectsFinder
.
new
.
execute
(
user
,
group:
group
).
any?
rules
<<
:read_group
end
rules
<<
:read_group
if
can_read_group?
(
user
,
group
)
# Only group masters and group owners can create new projects and change permission level
if
group
.
has_master?
(
user
)
||
group
.
has_owner?
(
user
)
||
user
.
admin?
rules
+=
[
:create_projects
,
:admin_milestones
,
:change_visibility_level
:admin_milestones
]
end
...
...
@@ -289,13 +286,20 @@ class Ability
rules
+=
[
:admin_group
,
:admin_namespace
,
:admin_group_member
:admin_group_member
,
:change_visibility_level
]
end
rules
.
flatten
end
def
can_read_group?
(
user
,
group
)
is_project_member
=
ProjectsFinder
.
new
.
execute
(
user
,
group:
group
).
any?
internal_group_allowed
=
group
.
internal?
&&
user
.
present?
user
.
admin?
||
group
.
users
.
include?
(
user
)
||
is_project_member
||
group
.
public?
||
internal_group_allowed
end
def
namespace_abilities
(
user
,
namespace
)
rules
=
[]
...
...
app/models/concerns/shared_scopes.rb
0 → 100644
浏览文件 @
5551ccd7
module
SharedScopes
extend
ActiveSupport
::
Concern
included
do
scope
:public_only
,
->
{
where
(
visibility_level:
Group
::
PUBLIC
)
}
scope
:public_and_internal_only
,
->
{
where
(
visibility_level:
[
Group
::
PUBLIC
,
Group
::
INTERNAL
]
)
}
end
end
app/models/group.rb
浏览文件 @
5551ccd7
...
...
@@ -21,7 +21,7 @@ class Group < Namespace
include
Gitlab
::
ConfigHelper
include
Gitlab
::
VisibilityLevel
include
Referable
include
SharedScopes
has_many
:group_members
,
dependent: :destroy
,
as: :source
,
class_name:
'GroupMember'
alias_method
:members
,
:group_members
...
...
@@ -35,10 +35,6 @@ class Group < Namespace
after_create
:post_create_hook
after_destroy
:post_destroy_hook
scope
:public_only
,
->
{
where
(
visibility_level:
Group
::
PUBLIC
)
}
scope
:public_and_internal_only
,
->
{
where
(
visibility_level:
[
Group
::
PUBLIC
,
Group
::
INTERNAL
]
)
}
class
<<
self
def
search
(
query
)
where
(
"LOWER(namespaces.name) LIKE :query or LOWER(namespaces.path) LIKE :query"
,
query:
"%
#{
query
.
downcase
}
%"
)
...
...
@@ -69,6 +65,10 @@ class Group < Namespace
name
end
def
visibility_level_field
visibility_level
end
def
avatar_url
(
size
=
nil
)
if
avatar
.
present?
[
gitlab_config
.
url
,
avatar
.
url
].
join
...
...
app/models/project.rb
浏览文件 @
5551ccd7
...
...
@@ -52,6 +52,7 @@ class Project < ActiveRecord::Base
include
AfterCommitQueue
include
CaseSensitivity
include
TokenAuthenticatable
include
SharedScopes
extend
Gitlab
::
ConfigHelper
...
...
@@ -213,8 +214,6 @@ class Project < ActiveRecord::Base
scope
:in_group_namespace
,
->
{
joins
(
:group
)
}
scope
:personal
,
->
(
user
)
{
where
(
namespace_id:
user
.
namespace_id
)
}
scope
:joined
,
->
(
user
)
{
where
(
'namespace_id != ?'
,
user
.
namespace_id
)
}
scope
:public_only
,
->
{
where
(
visibility_level:
Project
::
PUBLIC
)
}
scope
:public_and_internal_only
,
->
{
where
(
visibility_level:
Project
.
public_and_internal_levels
)
}
scope
:non_archived
,
->
{
where
(
archived:
false
)
}
scope
:for_milestones
,
->
(
ids
)
{
joins
(
:milestones
).
where
(
'milestones.id'
=>
ids
).
distinct
}
...
...
db/migrate/20160301124843_add_visibility_level_to_groups.rb
浏览文件 @
5551ccd7
class
AddVisibilityLevelToGroups
<
ActiveRecord
::
Migration
def
change
#All groups will be private when created
add_column
:namespaces
,
:visibility_level
,
:integer
,
null:
false
,
default:
0
#Set all existing groups to public
Group
.
update_all
(
visibility_level:
20
)
add_column
:namespaces
,
:visibility_level
,
:integer
,
null:
false
,
default:
20
end
end
db/schema.rb
浏览文件 @
5551ccd7
...
...
@@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord
::
Schema
.
define
(
version:
2016030
5220806
)
do
ActiveRecord
::
Schema
.
define
(
version:
2016030
1124843
)
do
# These are extensions that must be enabled in order to support this database
enable_extension
"plpgsql"
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录