|
|
|
|
@ -72,6 +72,21 @@ func create(x *vigo.X, req *CreateRequest) (*models.Org, error) {
|
|
|
|
|
return nil, vigo.ErrInternalServer.WithError(err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 为组织 admin 角色添加权限 (vb:*:* 表示该组织下的所有权限)
|
|
|
|
|
adminPerms := []models.RolePermission{
|
|
|
|
|
{RoleID: adminRole.ID, PermissionID: "vb:*:*", Condition: "none"},
|
|
|
|
|
{RoleID: adminRole.ID, PermissionID: "vb:org:read", Condition: "none"},
|
|
|
|
|
{RoleID: adminRole.ID, PermissionID: "vb:org:update", Condition: "none"},
|
|
|
|
|
{RoleID: adminRole.ID, PermissionID: "vb:org:delete", Condition: "none"},
|
|
|
|
|
}
|
|
|
|
|
for _, perm := range adminPerms {
|
|
|
|
|
if err := cfg.DB().Create(&perm).Error; err != nil {
|
|
|
|
|
cfg.DB().Delete(&models.Role{}).Where("org_id = ?", org.ID)
|
|
|
|
|
cfg.DB().Delete(org)
|
|
|
|
|
return nil, vigo.ErrInternalServer.WithError(err)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 授予创建者 admin 角色
|
|
|
|
|
if err := auth.VBaseAuth.GrantRole(x.Context(), ownerID, org.ID, "admin"); err != nil {
|
|
|
|
|
// 回滚
|
|
|
|
|
|