Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
LinuxSuRen
jenkins
提交
f2a46b8e
J
jenkins
项目概览
LinuxSuRen
/
jenkins
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
jenkins
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
f2a46b8e
编写于
1月 10, 2017
作者:
D
Daniel Beck
提交者:
GitHub
1月 10, 2017
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #2696 from daniel-beck/JENKINS-7874
[FIX JENKINS-7874] Autocomplete admin links only when admin
上级
0c991dec
250ce5b2
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
52 addition
and
26 deletion
+52
-26
core/src/main/java/jenkins/model/Jenkins.java
core/src/main/java/jenkins/model/Jenkins.java
+29
-26
test/src/test/java/hudson/search/SearchTest.java
test/src/test/java/hudson/search/SearchTest.java
+23
-0
未找到文件。
core/src/main/java/jenkins/model/Jenkins.java
浏览文件 @
f2a46b8e
...
...
@@ -2241,32 +2241,35 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
@Override
public
SearchIndexBuilder
makeSearchIndex
()
{
return
super
.
makeSearchIndex
()
.
add
(
"configure"
,
"config"
,
"configure"
)
.
add
(
"manage"
)
.
add
(
"log"
)
.
add
(
new
CollectionSearchIndex
<
TopLevelItem
>()
{
protected
SearchItem
get
(
String
key
)
{
return
getItemByFullName
(
key
,
TopLevelItem
.
class
);
}
protected
Collection
<
TopLevelItem
>
all
()
{
return
getAllItems
(
TopLevelItem
.
class
);
}
@Nonnull
@Override
protected
Iterable
<
TopLevelItem
>
allAsIterable
()
{
return
allItems
(
TopLevelItem
.
class
);
}
})
.
add
(
getPrimaryView
().
makeSearchIndex
())
.
add
(
new
CollectionSearchIndex
()
{
// for computers
protected
Computer
get
(
String
key
)
{
return
getComputer
(
key
);
}
protected
Collection
<
Computer
>
all
()
{
return
computers
.
values
();
}
})
.
add
(
new
CollectionSearchIndex
()
{
// for users
protected
User
get
(
String
key
)
{
return
User
.
get
(
key
,
false
);
}
protected
Collection
<
User
>
all
()
{
return
User
.
getAll
();
}
})
.
add
(
new
CollectionSearchIndex
()
{
// for views
protected
View
get
(
String
key
)
{
return
getView
(
key
);
}
protected
Collection
<
View
>
all
()
{
return
views
;
}
});
SearchIndexBuilder
builder
=
super
.
makeSearchIndex
();
if
(
hasPermission
(
ADMINISTER
))
{
builder
.
add
(
"configure"
,
"config"
,
"configure"
)
.
add
(
"manage"
)
.
add
(
"log"
);
}
builder
.
add
(
new
CollectionSearchIndex
<
TopLevelItem
>()
{
protected
SearchItem
get
(
String
key
)
{
return
getItemByFullName
(
key
,
TopLevelItem
.
class
);
}
protected
Collection
<
TopLevelItem
>
all
()
{
return
getAllItems
(
TopLevelItem
.
class
);
}
@Nonnull
@Override
protected
Iterable
<
TopLevelItem
>
allAsIterable
()
{
return
allItems
(
TopLevelItem
.
class
);
}
})
.
add
(
getPrimaryView
().
makeSearchIndex
())
.
add
(
new
CollectionSearchIndex
()
{
// for computers
protected
Computer
get
(
String
key
)
{
return
getComputer
(
key
);
}
protected
Collection
<
Computer
>
all
()
{
return
computers
.
values
();
}
})
.
add
(
new
CollectionSearchIndex
()
{
// for users
protected
User
get
(
String
key
)
{
return
User
.
get
(
key
,
false
);
}
protected
Collection
<
User
>
all
()
{
return
User
.
getAll
();
}
})
.
add
(
new
CollectionSearchIndex
()
{
// for views
protected
View
get
(
String
key
)
{
return
getView
(
key
);
}
protected
Collection
<
View
>
all
()
{
return
views
;
}
});
return
builder
;
}
public
String
getUrlChildPrefix
()
{
...
...
test/src/test/java/hudson/search/SearchTest.java
浏览文件 @
f2a46b8e
...
...
@@ -37,6 +37,10 @@ import java.net.URL;
import
java.util.ArrayList
;
import
java.util.List
;
import
hudson.model.User
;
import
hudson.security.ACL
;
import
hudson.security.ACLContext
;
import
jenkins.model.Jenkins
;
import
net.sf.json.JSONArray
;
import
net.sf.json.JSONObject
;
import
net.sf.json.JSONSerializer
;
...
...
@@ -46,6 +50,7 @@ import org.junit.Test;
import
org.jvnet.hudson.test.Issue
;
import
org.jvnet.hudson.test.JenkinsRule
;
import
org.jvnet.hudson.test.JenkinsRule.WebClient
;
import
org.jvnet.hudson.test.MockAuthorizationStrategy
;
import
org.jvnet.hudson.test.MockFolder
;
import
com.gargoylesoftware.htmlunit.AlertHandler
;
...
...
@@ -390,6 +395,24 @@ public class SearchTest {
assertTrue
(
suggest
.
contains
(
p2
));
}
@Test
@Issue
(
"JENKINS-7874"
)
public
void
adminOnlyLinksNotShownToRegularUser
()
{
j
.
jenkins
.
setSecurityRealm
(
j
.
createDummySecurityRealm
());
MockAuthorizationStrategy
mas
=
new
MockAuthorizationStrategy
();
mas
.
grant
(
Jenkins
.
READ
).
onRoot
().
toEveryone
();
j
.
jenkins
.
setAuthorizationStrategy
(
mas
);
try
(
ACLContext
_
=
ACL
.
as
(
User
.
get
(
"alice"
)))
{
List
<
SearchItem
>
results
=
new
ArrayList
<>();
j
.
jenkins
.
getSearchIndex
().
find
(
"config"
,
results
);
j
.
jenkins
.
getSearchIndex
().
find
(
"manage"
,
results
);
j
.
jenkins
.
getSearchIndex
().
find
(
"log"
,
results
);
assertEquals
(
"empty results list"
,
0
,
results
.
size
());
}
}
private
List
<
SearchItem
>
suggest
(
SearchIndex
index
,
String
term
)
{
List
<
SearchItem
>
result
=
new
ArrayList
<
SearchItem
>();
index
.
suggest
(
term
,
result
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录