Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
zhangjian1949
apollo
提交
bec6a785
apollo
项目概览
zhangjian1949
/
apollo
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
apollo
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
bec6a785
编写于
6月 28, 2016
作者:
J
Jason Song
提交者:
GitHub
6月 28, 2016
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #301 from lepdou/0627_0701
已授权校验 & 创建app 用户模糊搜索
上级
a474d5ca
f763525b
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
42 addition
and
21 deletion
+42
-21
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/AppController.java
...rip/framework/apollo/portal/controller/AppController.java
+10
-1
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/PermissionController.java
...mework/apollo/portal/controller/PermissionController.java
+9
-2
apollo-portal/src/main/resources/static/app.html
apollo-portal/src/main/resources/static/app.html
+1
-4
apollo-portal/src/main/resources/static/namespace/role.html
apollo-portal/src/main/resources/static/namespace/role.html
+2
-2
apollo-portal/src/main/resources/static/scripts/controller/AppController.js
...main/resources/static/scripts/controller/AppController.js
+9
-2
apollo-portal/src/main/resources/static/scripts/controller/role/AppRoleController.js
...urces/static/scripts/controller/role/AppRoleController.js
+1
-0
apollo-portal/src/main/resources/static/scripts/controller/role/NamespaceRoleController.js
...static/scripts/controller/role/NamespaceRoleController.js
+6
-6
apollo-portal/src/test/java/com/ctrip/framework/apollo/portal/ServiceExceptionTest.java
...m/ctrip/framework/apollo/portal/ServiceExceptionTest.java
+4
-4
未找到文件。
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/AppController.java
浏览文件 @
bec6a785
...
...
@@ -8,9 +8,11 @@ import com.ctrip.framework.apollo.common.utils.InputValidator;
import
com.ctrip.framework.apollo.core.enums.Env
;
import
com.ctrip.framework.apollo.core.exception.BadRequestException
;
import
com.ctrip.framework.apollo.portal.PortalSettings
;
import
com.ctrip.framework.apollo.portal.entity.po.UserInfo
;
import
com.ctrip.framework.apollo.portal.entity.vo.EnvClusterInfo
;
import
com.ctrip.framework.apollo.portal.listener.AppCreationEvent
;
import
com.ctrip.framework.apollo.portal.service.AppService
;
import
com.ctrip.framework.apollo.portal.service.UserService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.ApplicationEventPublisher
;
...
...
@@ -40,6 +42,8 @@ public class AppController {
@Autowired
private
ApplicationEventPublisher
publisher
;
@Autowired
private
UserService
userService
;
@RequestMapping
(
""
)
public
List
<
App
>
findAllApp
()
{
...
...
@@ -71,12 +75,17 @@ public class AppController {
@RequestMapping
(
value
=
""
,
method
=
RequestMethod
.
POST
)
public
ResponseEntity
<
Void
>
create
(
@RequestBody
App
app
)
{
checkArgument
(
app
.
getName
(),
app
.
getAppId
(),
app
.
getOwner
Email
(),
app
.
getOwner
Name
(),
checkArgument
(
app
.
getName
(),
app
.
getAppId
(),
app
.
getOwnerName
(),
app
.
getOrgId
(),
app
.
getOrgName
());
if
(!
InputValidator
.
isValidClusterNamespace
(
app
.
getAppId
()))
{
throw
new
BadRequestException
(
String
.
format
(
"AppId格式错误: %s"
,
InputValidator
.
INVALID_CLUSTER_NAMESPACE_MESSAGE
));
}
UserInfo
userInfo
=
userService
.
findByUserId
(
app
.
getOwnerName
());
if
(
userInfo
==
null
){
throw
new
BadRequestException
(
"应用负责人不存在"
);
}
app
.
setOwnerEmail
(
userInfo
.
getEmail
());
appService
.
enrichUserInfo
(
app
);
App
createdApp
=
appService
.
create
(
app
);
...
...
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/PermissionController.java
浏览文件 @
bec6a785
...
...
@@ -16,6 +16,7 @@ import com.ctrip.framework.apollo.portal.util.RoleUtils;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
...
...
@@ -89,8 +90,11 @@ public class PermissionController {
if
(!
RoleType
.
isValidRoleType
(
roleType
)){
throw
new
BadRequestException
(
"role type is illegal"
);
}
rolePermissionService
.
assignRoleToUsers
(
RoleUtils
.
buildNamespaceRoleName
(
appId
,
namespaceName
,
roleType
),
Set
<
String
>
assignedUser
=
rolePermissionService
.
assignRoleToUsers
(
RoleUtils
.
buildNamespaceRoleName
(
appId
,
namespaceName
,
roleType
),
Sets
.
newHashSet
(
user
),
userInfoHolder
.
getUser
().
getUserId
());
if
(
CollectionUtils
.
isEmpty
(
assignedUser
)){
throw
new
BadRequestException
(
user
+
"已授权"
);
}
return
ResponseEntity
.
ok
().
build
();
}
...
...
@@ -130,8 +134,11 @@ public class PermissionController {
if
(!
RoleType
.
isValidRoleType
(
roleType
)){
throw
new
BadRequestException
(
"role type is illegal"
);
}
rolePermissionService
.
assignRoleToUsers
(
RoleUtils
.
buildAppRoleName
(
appId
,
roleType
),
Set
<
String
>
assignedUsers
=
rolePermissionService
.
assignRoleToUsers
(
RoleUtils
.
buildAppRoleName
(
appId
,
roleType
),
Sets
.
newHashSet
(
user
),
userInfoHolder
.
getUser
().
getUserId
());
if
(
CollectionUtils
.
isEmpty
(
assignedUsers
)){
throw
new
BadRequestException
(
user
+
"已授权"
);
}
return
ResponseEntity
.
ok
().
build
();
}
...
...
apollo-portal/src/main/resources/static/app.html
浏览文件 @
bec6a785
...
...
@@ -48,10 +48,7 @@
<div
class=
"form-group"
>
<label
class=
"col-sm-2 control-label"
><apollorequiredfiled></apollorequiredfiled>
应用负责人
</label>
<div
class=
"col-sm-6"
>
<div
class=
"input-group"
>
<input
type=
"text"
class=
"form-control"
name=
"appOwner"
ng-model=
"app.ownerName"
required
>
<div
class=
"input-group-addon"
ng-bind=
"emailPostfix"
></div>
</div>
<apollouserselector
apollo-id=
"userSelectWidgetId"
></apollouserselector>
<small>
(负责人具有项目管理的最高权限,比如分配配置的修改权,发布权等)
</small>
</div>
</div>
...
...
apollo-portal/src/main/resources/static/namespace/role.html
浏览文件 @
bec6a785
...
...
@@ -73,8 +73,8 @@
<button
type=
"submit"
class=
"btn btn-default"
style=
"margin-left: 20px;"
>
添加
</button>
</form>
<!-- Split button -->
<div
style=
"margin-top: 15px;
"
>
<div
class=
"btn-group"
ng-repeat=
"user in rolesAssignedUsers.releaseRoleUsers"
>
<div
class=
"user-container
"
>
<div
class=
"btn-group
user-info
"
ng-repeat=
"user in rolesAssignedUsers.releaseRoleUsers"
>
<button
type=
"button"
class=
"btn btn-default"
ng-bind=
"user.userId"
></button>
<button
type=
"button"
class=
"btn btn-default dropdown-toggle"
data-toggle=
"dropdown"
aria-haspopup=
"true"
aria-expanded=
"false"
ng-click=
"removeUserRole('ReleaseNamespace', user.userId)"
>
...
...
apollo-portal/src/main/resources/static/scripts/controller/AppController.js
浏览文件 @
bec6a785
...
...
@@ -26,7 +26,7 @@ create_app_module.controller('CreateAppController', ['$scope', '$window', 'toast
});
$scope
.
emailPostfix
=
"
@ctrip.com
"
;
$scope
.
userSelectWidgetId
=
"
userSelectWidgetId
"
;
$scope
.
create
=
function
()
{
var
selectedOrg
=
$
(
'
#organization
'
).
select2
(
'
data
'
)[
0
];
...
...
@@ -38,7 +38,14 @@ create_app_module.controller('CreateAppController', ['$scope', '$window', 'toast
$scope
.
app
.
orgId
=
selectedOrg
.
id
;
$scope
.
app
.
orgName
=
selectedOrg
.
name
;
$scope
.
app
.
ownerEmail
=
$scope
.
app
.
ownerName
+
$scope
.
emailPostfix
;
// ownerName
var
user
=
$
(
'
.
'
+
$scope
.
userSelectWidgetId
).
select2
(
'
data
'
)[
0
];
if
(
!
user
){
toastr
.
warning
(
"
请输入应用负责人
"
);
return
;
}
$scope
.
app
.
ownerName
=
user
.
id
;
AppService
.
create
(
$scope
.
app
).
then
(
function
(
result
)
{
toastr
.
success
(
'
添加成功!
'
);
...
...
apollo-portal/src/main/resources/static/scripts/controller/role/AppRoleController.js
浏览文件 @
bec6a785
...
...
@@ -36,6 +36,7 @@ role_module.controller('AppRoleController',
.
then
(
function
(
result
)
{
toastr
.
success
(
"
添加成功
"
);
$scope
.
appRoleUsers
.
masterUsers
.
push
({
userId
:
toAssignMasterRoleUser
});
$
(
'
.
'
+
$scope
.
userSelectWidgetId
).
select2
(
"
val
"
,
""
);
},
function
(
result
)
{
toastr
.
error
(
AppUtil
.
errorMsg
(
result
),
"
添加失败
"
);
});
...
...
apollo-portal/src/main/resources/static/scripts/controller/role/NamespaceRoleController.js
浏览文件 @
bec6a785
...
...
@@ -9,7 +9,7 @@ role_module.controller('NamespaceRoleController',
appId
:
params
.
appid
,
namespaceName
:
params
.
namespaceName
};
$scope
.
releaseRoleWidgetId
=
'
releaseRoleWidgetId
'
;
$scope
.
modifyRoleWidgetId
=
'
modifyRoleWidgetId
'
;
...
...
@@ -24,16 +24,14 @@ role_module.controller('NamespaceRoleController',
$scope
.
pageContext
.
namespaceName
)
.
then
(
function
(
result
)
{
$scope
.
rolesAssignedUsers
=
result
;
console
.
log
(
result
);
},
function
(
result
)
{
toastr
.
error
(
AppUtil
.
errorMsg
(
result
),
"
加载授权用户出错
"
);
});
$scope
.
assignRoleToUser
=
function
(
roleType
)
{
if
(
'
ReleaseNamespace
'
==
roleType
)
{
var
user
=
$
(
'
.
'
+
$scope
.
releaseRoleWidgetId
).
select2
(
'
data
'
)[
0
];
if
(
!
user
){
if
(
!
user
)
{
toastr
.
warning
(
"
请选择用户
"
);
return
;
}
...
...
@@ -45,12 +43,13 @@ role_module.controller('NamespaceRoleController',
toastr
.
success
(
"
添加成功
"
);
$scope
.
rolesAssignedUsers
.
releaseRoleUsers
.
push
(
{
userId
:
toAssignReleaseNamespaceRoleUser
});
$
(
'
.
'
+
$scope
.
releaseRoleWidgetId
).
select2
(
"
val
"
,
""
);
},
function
(
result
)
{
toastr
.
error
(
AppUtil
.
errorMsg
(
result
),
"
添加失败
"
);
});
}
else
{
var
user
=
$
(
'
.
'
+
$scope
.
modifyRoleWidgetId
).
select2
(
'
data
'
)[
0
];
if
(
!
user
){
if
(
!
user
)
{
toastr
.
warning
(
"
请选择用户
"
);
return
;
}
...
...
@@ -62,6 +61,7 @@ role_module.controller('NamespaceRoleController',
toastr
.
success
(
"
添加成功
"
);
$scope
.
rolesAssignedUsers
.
modifyRoleUsers
.
push
(
{
userId
:
toAssignModifyNamespaceRoleUser
});
$
(
'
.
'
+
$scope
.
modifyRoleWidgetId
).
select2
(
"
val
"
,
""
);
},
function
(
result
)
{
toastr
.
error
(
AppUtil
.
errorMsg
(
result
),
"
添加失败
"
);
});
...
...
@@ -102,5 +102,5 @@ role_module.controller('NamespaceRoleController',
}
list
.
splice
(
index
,
1
);
}
}]);
apollo-portal/src/test/java/com/ctrip/framework/apollo/portal/ServiceExceptionTest.java
浏览文件 @
bec6a785
...
...
@@ -26,7 +26,7 @@ import com.ctrip.framework.apollo.common.utils.ExceptionUtils;
import
com.ctrip.framework.apollo.core.dto.AppDTO
;
import
com.ctrip.framework.apollo.core.exception.ServiceException
;
import
com.ctrip.framework.apollo.portal.controller.AppController
;
import
com.ctrip.framework.apollo.portal.service.
App
Service
;
import
com.ctrip.framework.apollo.portal.service.
User
Service
;
import
com.google.gson.Gson
;
...
...
@@ -35,12 +35,12 @@ public class ServiceExceptionTest extends AbstractPortalTest {
@Autowired
private
AppController
appController
;
@Mock
private
AppService
app
Service
;
private
UserService
user
Service
;
@Before
public
void
setUp
()
{
MockitoAnnotations
.
initMocks
(
this
);
ReflectionTestUtils
.
setField
(
appController
,
"
appService"
,
app
Service
);
ReflectionTestUtils
.
setField
(
appController
,
"
userService"
,
user
Service
);
}
private
String
getBaseAppUrl
()
{
...
...
@@ -61,7 +61,7 @@ public class ServiceExceptionTest extends AbstractPortalTest {
new
HttpServerErrorException
(
HttpStatus
.
INTERNAL_SERVER_ERROR
,
"admin server error"
,
new
Gson
().
toJson
(
errorAttributes
).
getBytes
(),
Charset
.
defaultCharset
());
when
(
appService
.
create
(
any
(
App
.
class
))).
thenThrow
(
adminException
);
when
(
userService
.
findByUserId
(
any
(
String
.
class
))).
thenThrow
(
adminException
);
App
app
=
generateSampleApp
();
try
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录