This commit is contained in:
parent
6761ab2091
commit
753509e910
@ -150,14 +150,17 @@ func CreateUser(ctx *context.Context, w http.ResponseWriter, req *http.Request)
|
||||
writeAccountGroupError(w, err)
|
||||
return
|
||||
}
|
||||
response.NewSuccessResponse(struct {
|
||||
models.User
|
||||
GroupIDs []int
|
||||
MembershipVersion int
|
||||
}{user, groupIDs, user.SecurityVersion}).FPrint(w)
|
||||
response.NewSuccessResponse(userListItem{
|
||||
ID: user.ID, Account: user.Account, Name: user.Name,
|
||||
Disabled: user.Disabled, Role: user.EffectiveRole(), IsAdmin: user.IsAdmin,
|
||||
GroupIDs: groupIDs, MembershipVersion: user.SecurityVersion,
|
||||
MustChangePassword: user.MustChangePassword,
|
||||
ExternalEmailEnabled: user.ExternalEmailEnabled == 1,
|
||||
}).FPrint(w)
|
||||
}
|
||||
|
||||
type userListRequest struct {
|
||||
UserID int `json:"user_id"`
|
||||
GroupID *int `json:"group_id"`
|
||||
CurrentPage int `json:"current_page"`
|
||||
PageSize int `json:"page_size"`
|
||||
@ -231,6 +234,9 @@ func UserList(ctx *context.Context, w http.ResponseWriter, req *http.Request) {
|
||||
query := db.Instance.Table(&models.User{})
|
||||
defer query.Close()
|
||||
accountgroup.ApplyScope(query, ctx.UserID, ctx.EffectiveRole())
|
||||
if reqData.UserID != 0 {
|
||||
query.And("id = ?", reqData.UserID)
|
||||
}
|
||||
if reqData.GroupID != nil {
|
||||
groups, err := accountgroup.VisibleGroups(db.Instance, ctx.UserID, ctx.EffectiveRole())
|
||||
if err != nil {
|
||||
|
||||
@ -130,10 +130,30 @@ export function usePage() {
|
||||
const title = ref(lang.editUser)
|
||||
|
||||
const reflushList = async function () {
|
||||
const selectedID = selectedUser.value?.ID
|
||||
await groups.refreshGroups()
|
||||
if (selectedUser.value?.ID) {
|
||||
if (selectedID && selectedUser.value?.ID === selectedID) {
|
||||
const users = groups.accountGroups.value.flatMap(group => group.rows)
|
||||
selectedUser.value = users.find(item => item.ID === selectedUser.value.ID) || selectedUser.value
|
||||
let current = users.find(item => item.ID === selectedID)
|
||||
if (!current) {
|
||||
const response = await http.post('/api/v1/user/list', { user_id: selectedID, page_size: 1 })
|
||||
if (response?.errorNo !== 0) throw new Error(response?.errorMsg || lang.fail)
|
||||
current = response.data?.list?.find(item => item.ID === selectedID)
|
||||
}
|
||||
if (selectedUser.value?.ID !== selectedID) return
|
||||
if (!current) {
|
||||
selectedUser.value = null
|
||||
userInfoDialog.value = false
|
||||
return
|
||||
}
|
||||
const savedGroups = selectedUser.value.GroupIDs || [0]
|
||||
const currentGroups = current.GroupIDs || [0]
|
||||
if (current.Role === selectedUser.value.Role
|
||||
&& currentGroups.length === savedGroups.length
|
||||
&& savedGroups.every(id => currentGroups.includes(id))) {
|
||||
editingMembershipVersion.value = current.MembershipVersion
|
||||
}
|
||||
selectedUser.value = current
|
||||
}
|
||||
}
|
||||
|
||||
@ -199,8 +219,12 @@ export function usePage() {
|
||||
externalEmailDialogVisible.value = true
|
||||
}
|
||||
|
||||
const handleSecurityChanged = function () {
|
||||
reflushList()
|
||||
const handleSecurityChanged = async function () {
|
||||
try {
|
||||
await reflushList()
|
||||
} catch (error) {
|
||||
ElNotification({ title: lang.fail, message: error?.message || lang.fail, type: 'error' })
|
||||
}
|
||||
}
|
||||
|
||||
const submit = async function () {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user