Просмотр исходного кода

fix: 禁止修改同步用户余额

同步用户余额由主节点管理,从节点不应允许管理员修改其余额。
前端禁用额度输入和添加额度按钮,后端增加校验拦截。
master
fengsilin 3 недель назад
Родитель
Сommit
1c5e6d03d9
6 измененных файлов: 13 добавлений и 1 удалений
  1. +4
    -0
      controller/user.go
  2. +1
    -0
      i18n/keys.go
  3. +1
    -0
      i18n/locales/en.yaml
  4. +1
    -0
      i18n/locales/zh-CN.yaml
  5. +1
    -0
      i18n/locales/zh-TW.yaml
  6. +5
    -1
      web/src/components/table/users/modals/EditUserModal.jsx

+ 4
- 0
controller/user.go Просмотреть файл

@@ -562,6 +562,10 @@ func UpdateUser(c *gin.Context) {
common.ApiError(c, err)
return
}
if originUser.IsSyncedUser() && originUser.Quota != updatedUser.Quota {
common.ApiErrorI18n(c, i18n.MsgSyncedUserQuotaCannotModify)
return
}
myRole := c.GetInt("role")
if myRole <= originUser.Role && myRole != common.RoleRootUser {
common.ApiErrorI18n(c, i18n.MsgUserNoPermissionHigherLevel)


+ 1
- 0
i18n/keys.go Просмотреть файл

@@ -78,6 +78,7 @@ const (
MsgUserNoPermissionHigherLevel = "user.no_permission_higher_level"
MsgUserCannotCreateHigherLevel = "user.cannot_create_higher_level"
MsgUserCannotDeleteRootUser = "user.cannot_delete_root_user"
MsgSyncedUserQuotaCannotModify = "user.synced_user_quota_cannot_modify"
MsgUserCannotDisableRootUser = "user.cannot_disable_root_user"
MsgUserCannotDemoteRootUser = "user.cannot_demote_root_user"
MsgUserAlreadyAdmin = "user.already_admin"


+ 1
- 0
i18n/locales/en.yaml Просмотреть файл

@@ -68,6 +68,7 @@ user.no_permission_same_level: "No permission to access users of same or higher
user.no_permission_higher_level: "No permission to update users of same or higher permission level"
user.cannot_create_higher_level: "Cannot create users with permission level equal to or higher than yourself"
user.cannot_delete_root_user: "Cannot delete super administrator account"
user.synced_user_quota_cannot_modify: "Synced user quota is managed by the master node and cannot be modified"
user.cannot_disable_root_user: "Cannot disable super administrator user"
user.cannot_demote_root_user: "Cannot demote super administrator user"
user.already_admin: "This user is already an administrator"


+ 1
- 0
i18n/locales/zh-CN.yaml Просмотреть файл

@@ -69,6 +69,7 @@ user.no_permission_same_level: "无权获取同级或更高等级用户的信息
user.no_permission_higher_level: "无权更新同权限等级或更高权限等级的用户信息"
user.cannot_create_higher_level: "无法创建权限大于等于自己的用户"
user.cannot_delete_root_user: "不能删除超级管理员账户"
user.synced_user_quota_cannot_modify: "同步用户余额由主节点管理,不可修改"
user.cannot_disable_root_user: "无法禁用超级管理员用户"
user.cannot_demote_root_user: "无法降级超级管理员用户"
user.already_admin: "该用户已经是管理员"


+ 1
- 0
i18n/locales/zh-TW.yaml Просмотреть файл

@@ -69,6 +69,7 @@ user.no_permission_same_level: "無權獲取同級或更高等級使用者的資
user.no_permission_higher_level: "無權更新同權限等級或更高權限等級的使用者資訊"
user.cannot_create_higher_level: "無法建立權限大於等於自己的使用者"
user.cannot_delete_root_user: "不能刪除超級管理員帳號"
user.synced_user_quota_cannot_modify: "同步使用者餘額由主節點管理,不可修改"
user.cannot_disable_root_user: "無法禁用超級管理員使用者"
user.cannot_demote_root_user: "無法降級超級管理員使用者"
user.already_admin: "該使用者已經是管理員"


+ 5
- 1
web/src/components/table/users/modals/EditUserModal.jsx Просмотреть файл

@@ -72,6 +72,7 @@ const EditUserModal = (props) => {
const [groupOptions, setGroupOptions] = useState([]);
const [bindingModalVisible, setBindingModalVisible] = useState(false);
const formApiRef = useRef(null);
const [isSyncedUser, setIsSyncedUser] = useState(false);

const isEdit = Boolean(userId);

@@ -110,6 +111,7 @@ const EditUserModal = (props) => {
const { success, message, data } = res.data;
if (success) {
data.password = '';
setIsSyncedUser(data.source === 'synced');
formApiRef.current?.setValues({ ...getInitValues(), ...data });
} else {
showError(message);
@@ -322,9 +324,10 @@ const EditUserModal = (props) => {
label={t('剩余额度')}
placeholder={t('请输入新的剩余额度')}
step={500000}
extraText={renderQuotaWithPrompt(values.quota || 0)}
extraText={isSyncedUser ? t('同步用户余额由主节点管理,不可修改') : renderQuotaWithPrompt(values.quota || 0)}
rules={[{ required: true, message: t('请输入额度') }]}
style={{ width: '100%' }}
disabled={isSyncedUser}
/>
</Col>

@@ -333,6 +336,7 @@ const EditUserModal = (props) => {
<Button
icon={<IconPlus />}
onClick={() => setIsModalOpen(true)}
disabled={isSyncedUser}
/>
</Form.Slot>
</Col>


Загрузка…
Отмена
Сохранить