修复无法添加成员到团队的问题
This commit is contained in:
parent
21929ff21c
commit
0f3d164c6c
@ -14,7 +14,7 @@
|
||||
>
|
||||
<template #body-content>
|
||||
<div class="space-y-4">
|
||||
<FormControl label="邮箱" v-model="email" />
|
||||
<FormControl label="用户名" v-model="username" />
|
||||
<div
|
||||
v-if="$resources.roles.data?.length > 0"
|
||||
class="flex items-center space-x-2"
|
||||
@ -60,13 +60,11 @@
|
||||
|
||||
<script>
|
||||
import { toast } from 'vue-sonner';
|
||||
import { DashboardError } from '../../utils/error';
|
||||
import { getToastErrorMessage } from '../../utils/toast';
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
email: '',
|
||||
username: '',
|
||||
show: true,
|
||||
selectedRoles: [],
|
||||
selectedRole: null,
|
||||
@ -110,29 +108,25 @@ export default {
|
||||
);
|
||||
},
|
||||
inviteMember() {
|
||||
toast.promise(
|
||||
this.$team.inviteTeamMember.submit(
|
||||
{
|
||||
email: this.email,
|
||||
roles: this.selectedRoles.map((role) => role.value),
|
||||
},
|
||||
{
|
||||
validate: () => {
|
||||
if (!this.email) {
|
||||
throw new DashboardError('邮箱为必填项');
|
||||
if (!this.username) {
|
||||
toast.error('用户名为必填项');
|
||||
return;
|
||||
}
|
||||
},
|
||||
},
|
||||
),
|
||||
{
|
||||
loading: '正在发送邀请...',
|
||||
success: () => {
|
||||
if (this.$team.inviteTeamMember.loading) return;
|
||||
|
||||
toast.success('已添加成员到团队', { duration: 2000 });
|
||||
this.show = false;
|
||||
return '邀请已发送!';
|
||||
},
|
||||
error: (e) => getToastErrorMessage(e),
|
||||
},
|
||||
);
|
||||
this.$team.inviteTeamMember.submit({
|
||||
username: this.username,
|
||||
roles: this.selectedRoles.map((role) => role.value),
|
||||
});
|
||||
this.username = '';
|
||||
this.selectedRoles = [];
|
||||
setTimeout(() => {
|
||||
if (this.$team?.getTeamMembers) {
|
||||
this.$team.getTeamMembers.submit();
|
||||
}
|
||||
}, 500);
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
@ -774,7 +774,7 @@ class Team(Page):
|
||||
return get_team_members(self.name)
|
||||
|
||||
@dashboard_whitelist()
|
||||
def invite_team_member(self, email, roles=None):
|
||||
def invite_team_member(self, username, roles=None):
|
||||
JcloudRole = jingrow.qb.PageType("Jcloud Role")
|
||||
JcloudRoleUser = jingrow.qb.PageType("Jcloud Role User")
|
||||
|
||||
@ -790,26 +790,36 @@ class Team(Page):
|
||||
if jingrow.session.user != self.user and not has_admin_access.run():
|
||||
jingrow.throw(_("Only team owner can invite team members"))
|
||||
|
||||
jingrow.utils.validate_email_address(email, True)
|
||||
# 验证用户名是否存在
|
||||
if not username:
|
||||
jingrow.throw(_("用户名不能为空"))
|
||||
|
||||
if jingrow.db.exists("Team Member", {"user": email, "parent": self.name, "parenttype": "Team"}):
|
||||
jingrow.throw(_("Team member already exists"))
|
||||
# 检查用户是否存在(通过 username 或 name)
|
||||
user = jingrow.db.get_value("User", {"username": username}, ["name", "enabled"], as_dict=True)
|
||||
if not user:
|
||||
# 如果通过 username 找不到,尝试通过 name(因为 name 可能是 username)
|
||||
user = jingrow.db.get_value("User", username, ["name", "enabled"], as_dict=True)
|
||||
|
||||
account_request = jingrow.get_pg(
|
||||
{
|
||||
"pagetype": "Account Request",
|
||||
"team": self.name,
|
||||
"email": email,
|
||||
"role": "Jcloud Member",
|
||||
"invited_by": self.user,
|
||||
"send_email": True,
|
||||
}
|
||||
)
|
||||
if not user:
|
||||
jingrow.throw(_("用户不存在"))
|
||||
|
||||
if not user.enabled:
|
||||
jingrow.throw(_("用户已被禁用"))
|
||||
|
||||
# 检查是否已经是团队成员
|
||||
if jingrow.db.exists("Team Member", {"user": user.name, "parent": self.name, "parenttype": "Team"}):
|
||||
jingrow.throw(_("该用户已经是团队成员"))
|
||||
|
||||
# 直接添加团队成员
|
||||
self.append("team_members", {"user": user.name})
|
||||
self.save(ignore_permissions=True)
|
||||
|
||||
# 添加角色
|
||||
if roles:
|
||||
for role in roles:
|
||||
account_request.append("jcloud_roles", {"jcloud_role": role})
|
||||
|
||||
account_request.insert()
|
||||
role_pg = jingrow.get_pg("Jcloud Role", role)
|
||||
if role_pg:
|
||||
role_pg.add_user(user.name)
|
||||
|
||||
@jingrow.whitelist()
|
||||
def get_balance(self):
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user