Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MeterSphere
metersphere
提交
cbf4c3a8
M
metersphere
项目概览
MeterSphere
/
metersphere
上一次同步 大约 3 年
通知
25
Star
1
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
metersphere
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
cbf4c3a8
编写于
5月 19, 2020
作者:
S
shiziyuan9527
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
系统用户列表角色列
上级
037e7505
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
70 addition
and
16 deletion
+70
-16
backend/src/main/java/io/metersphere/controller/UserController.java
...c/main/java/io/metersphere/controller/UserController.java
+7
-2
backend/src/main/java/io/metersphere/dto/UserRoleDTO.java
backend/src/main/java/io/metersphere/dto/UserRoleDTO.java
+18
-0
backend/src/main/java/io/metersphere/service/UserService.java
...end/src/main/java/io/metersphere/service/UserService.java
+13
-5
frontend/src/business/components/settings/system/User.vue
frontend/src/business/components/settings/system/User.vue
+32
-9
未找到文件。
backend/src/main/java/io/metersphere/controller/UserController.java
浏览文件 @
cbf4c3a8
...
...
@@ -17,15 +17,14 @@ import io.metersphere.controller.request.member.SetAdminRequest;
import
io.metersphere.controller.request.organization.AddOrgMemberRequest
;
import
io.metersphere.controller.request.organization.QueryOrgMemberRequest
;
import
io.metersphere.dto.UserDTO
;
import
io.metersphere.dto.UserRoleDTO
;
import
io.metersphere.service.OrganizationService
;
import
io.metersphere.service.UserService
;
import
io.metersphere.service.WorkspaceService
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.shiro.authz.annotation.Logical
;
import
org.apache.shiro.authz.annotation.RequiresRoles
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.web.bind.annotation.*
;
import
javax.annotation.Resource
;
import
java.util.List
;
...
...
@@ -54,6 +53,12 @@ public class UserController {
return
PageUtils
.
setPageInfo
(
page
,
userService
.
getUserListWithRequest
(
request
));
}
@GetMapping
(
"/special/user/role/{userId}"
)
@RequiresRoles
(
RoleConstants
.
ADMIN
)
public
UserRoleDTO
getUserRole
(
@PathVariable
(
"userId"
)
String
userId
)
{
return
userService
.
getUserRole
(
userId
);
}
@GetMapping
(
"/special/delete/{userId}"
)
@RequiresRoles
(
RoleConstants
.
ADMIN
)
public
void
deleteUser
(
@PathVariable
(
value
=
"userId"
)
String
userId
)
{
...
...
backend/src/main/java/io/metersphere/dto/UserRoleDTO.java
0 → 100644
浏览文件 @
cbf4c3a8
package
io.metersphere.dto
;
import
io.metersphere.base.domain.Role
;
import
io.metersphere.base.domain.UserRole
;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.util.List
;
@Getter
@Setter
public
class
UserRoleDTO
{
private
String
userId
;
private
List
<
Role
>
roles
;
private
List
<
UserRole
>
userRoles
;
private
static
final
long
serialVersionUID
=
1L
;
}
backend/src/main/java/io/metersphere/service/UserService.java
浏览文件 @
cbf4c3a8
...
...
@@ -17,13 +17,13 @@ import io.metersphere.controller.request.member.SetAdminRequest;
import
io.metersphere.controller.request.organization.AddOrgMemberRequest
;
import
io.metersphere.controller.request.organization.QueryOrgMemberRequest
;
import
io.metersphere.dto.UserDTO
;
import
io.metersphere.dto.UserRoleDTO
;
import
io.metersphere.i18n.Translator
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.CollectionUtils
;
import
javax.annotation.Resource
;
import
java.util.List
;
import
java.util.UUID
;
...
...
@@ -100,16 +100,24 @@ public class UserService {
}
UserDTO
userDTO
=
new
UserDTO
();
BeanUtils
.
copyProperties
(
user
,
userDTO
);
UserRoleDTO
userRole
=
getUserRole
(
userId
);
userDTO
.
setUserRoles
(
userRole
.
getUserRoles
());
userDTO
.
setRoles
(
userRole
.
getRoles
());
return
userDTO
;
}
public
UserRoleDTO
getUserRole
(
String
userId
)
{
UserRoleDTO
userRoleDTO
=
new
UserRoleDTO
();
//
UserRoleExample
userRoleExample
=
new
UserRoleExample
();
userRoleExample
.
createCriteria
().
andUserIdEqualTo
(
userId
);
List
<
UserRole
>
userRoleList
=
userRoleMapper
.
selectByExample
(
userRoleExample
);
if
(
CollectionUtils
.
isEmpty
(
userRoleList
))
{
return
userDTO
;
return
user
Role
DTO
;
}
// 设置 user_role
userDTO
.
setUserRoles
(
userRoleList
);
user
Role
DTO
.
setUserRoles
(
userRoleList
);
List
<
String
>
roleIds
=
userRoleList
.
stream
().
map
(
UserRole:
:
getRoleId
).
collect
(
Collectors
.
toList
());
...
...
@@ -117,9 +125,9 @@ public class UserService {
roleExample
.
createCriteria
().
andIdIn
(
roleIds
);
List
<
Role
>
roleList
=
roleMapper
.
selectByExample
(
roleExample
);
userDTO
.
setRoles
(
roleList
);
user
Role
DTO
.
setRoles
(
roleList
);
return
userDTO
;
return
user
Role
DTO
;
}
public
List
<
User
>
getUserList
()
{
...
...
frontend/src/business/components/settings/system/User.vue
浏览文件 @
cbf4c3a8
<
template
>
<div
v-loading=
"result.loading"
>
<el-card
class=
"table-card"
>
<el-card
class=
"table-card"
>
<template
v-slot:header
>
<ms-table-header
:condition.sync=
"condition"
@
search=
"search"
@
create=
"create"
:create-tip=
"$t('user.create')"
:title=
"$t('commons.member')"
/>
...
...
@@ -9,7 +9,12 @@
<el-table
:data=
"tableData"
style=
"width: 100%"
>
<el-table-column
prop=
"id"
label=
"ID"
/>
<el-table-column
prop=
"name"
:label=
"$t('commons.username')"
/>
<el-table-column
prop=
"name"
:label=
"$t('commons.username')"
width=
"200"
/>
<el-table-column
:label=
"$t('commons.role')"
width=
"120"
>
<
template
v-slot:default=
"scope"
>
<ms-roles-tag
:roles=
"scope.row.roles"
/>
</
template
>
</el-table-column>
<el-table-column
prop=
"email"
:label=
"$t('commons.email')"
/>
<el-table-column
prop=
"status"
:label=
"$t('commons.status')"
>
<
template
v-slot:default=
"scope"
>
...
...
@@ -22,7 +27,7 @@
/>
</
template
>
</el-table-column>
<el-table-column
prop=
"createTime"
:label=
"$t('commons.create_time')"
width=
"180"
>
<el-table-column
prop=
"createTime"
:label=
"$t('commons.create_time')"
>
<
template
v-slot:default=
"scope"
>
<span>
{{
scope
.
row
.
createTime
|
timestampFormatDate
}}
</span>
</
template
>
...
...
@@ -108,14 +113,14 @@
@
confirm=
"updateUser('updateUserForm')"
/>
</
template
>
</el-dialog>
<!--Changing user password in system settings-->
<!--Changing user password in system settings-->
<el-dialog
:title=
"$t('member.edit_password')"
:visible.sync=
"editPasswordVisible"
width=
"30%"
left
>
<el-form
:model=
"ruleForm"
label-position=
"right"
label-width=
"100px"
size=
"small"
:rules=
"rule"
ref=
"editPasswordForm"
class=
"demo-ruleForm"
>
<el-form-item
:label=
"$t('member.new_password')"
prop=
"newpassword"
>
<el-input
type=
"password"
v-model=
"ruleForm.newpassword"
autocomplete=
"off"
show-password
></el-input>
</el-form-item>
<el-form-item
>
<el-form-item>
<el-input
v-model=
"ruleForm.id"
autocomplete=
"off"
:disabled=
"true"
style=
"display:none"
/>
</el-form-item>
</el-form>
...
...
@@ -137,10 +142,19 @@
import
MsDialogFooter
from
"
../../common/components/MsDialogFooter
"
;
import
MsTableOperatorButton
from
"
../../common/components/MsTableOperatorButton
"
;
import
{
getCurrentUser
}
from
"
../../../../common/js/utils
"
;
import
MsRolesTag
from
"
../../common/components/MsRolesTag
"
;
export
default
{
name
:
"
MsUser
"
,
components
:
{
MsCreateBox
,
MsTablePagination
,
MsTableHeader
,
MsTableOperator
,
MsDialogFooter
,
MsTableOperatorButton
},
components
:
{
MsCreateBox
,
MsTablePagination
,
MsTableHeader
,
MsTableOperator
,
MsDialogFooter
,
MsTableOperatorButton
,
MsRolesTag
},
data
()
{
return
{
queryPath
:
'
/user/special/list
'
,
...
...
@@ -271,9 +285,9 @@
}
})
},
editUserPassword
(
editPasswordForm
){
this
.
$refs
[
editPasswordForm
].
validate
(
valid
=>
{
if
(
valid
)
{
editUserPassword
(
editPasswordForm
)
{
this
.
$refs
[
editPasswordForm
].
validate
(
valid
=>
{
if
(
valid
)
{
this
.
result
=
this
.
$post
(
this
.
editPasswordPath
,
this
.
ruleForm
,
response
=>
{
this
.
$success
(
this
.
$t
(
'
commons.modify_success
'
));
this
.
editPasswordVisible
=
false
;
...
...
@@ -290,6 +304,15 @@
let
data
=
response
.
data
;
this
.
total
=
data
.
itemCount
;
this
.
tableData
=
data
.
listObject
;
let
url
=
"
/user/special/user/role
"
;
for
(
let
i
=
0
;
i
<
this
.
tableData
.
length
;
i
++
)
{
this
.
$get
(
url
+
'
/
'
+
this
.
tableData
[
i
].
id
,
result
=>
{
let
data
=
result
.
data
;
let
roles
=
data
.
roles
;
// let userRoles = result.userRoles;
this
.
$set
(
this
.
tableData
[
i
],
"
roles
"
,
roles
);
})
}
})
},
handleClose
()
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录