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