Merge pull request #82 from RafayLabs/db-fixes

DB access fixes
This commit is contained in:
abin-rafay
2022-03-25 15:42:36 +05:30
committed by GitHub
5 changed files with 60 additions and 20 deletions

View File

@@ -359,7 +359,7 @@ metadata:
organization: :org
spec:
isGlobal: true
scope: cluster
scope: system
# Create role
POST :host/auth/v3/partner/:partner/organization/:org/roles
@@ -414,4 +414,44 @@ Content-Type: application/yaml
## Audit
# Audit by project
GET :host/event/v1/auditlog?filter.timefrom=now-1h
GET :host/event/v1/auditlog?filter.timefrom=now-1h
## Partner
# Create partner
POST :host/auth/v3/partner
Content-Type: application/yaml
metadata:
name: :partner
description: "A very important partner"
spec:
host: "https://important.org"
# List organizations
GET :host/auth/v3/partner/:partner/organizations
# Create organization
POST :host/auth/v3/partner/:partner/organization
Content-Type: application/yaml
metadata:
partner: :partner
name: :org
description: "Very first organization"
spec:
active: true
# Create project
POST :host/auth/v3/partner/:partner/organization/:org/project
Content-Type: application/yaml
metadata:
name: :project
description: "Very first project"
spec:
active: true
# Delete project
DELETE :host/auth/v3/partner/:partner/organization/:org/project/:project

View File

@@ -482,17 +482,17 @@ func (s *groupService) Delete(ctx context.Context, group *userv3.Group) (*userv3
return &userv3.Group{}, err
}
group, err = s.deleteGroupRoleRelaitons(ctx, s.db, grp.ID, group)
group, err = s.deleteGroupRoleRelaitons(ctx, tx, grp.ID, group)
if err != nil {
tx.Rollback()
return &userv3.Group{}, err
}
group, err = s.deleteGroupAccountRelations(ctx, s.db, grp.ID, group)
group, err = s.deleteGroupAccountRelations(ctx, tx, grp.ID, group)
if err != nil {
tx.Rollback()
return &userv3.Group{}, err
}
err = dao.Delete(ctx, s.db, grp.ID, grp)
err = dao.Delete(ctx, tx, grp.ID, grp)
if err != nil {
tx.Rollback()
return &userv3.Group{}, err

View File

@@ -52,11 +52,11 @@ func NewRoleService(db *bun.DB, azc AuthzService) RoleService {
func (s *roleService) getPartnerOrganization(ctx context.Context, db bun.IDB, role *rolev3.Role) (uuid.UUID, uuid.UUID, error) {
partner := role.GetMetadata().GetPartner()
org := role.GetMetadata().GetOrganization()
partnerId, err := dao.GetPartnerId(ctx, s.db, partner)
partnerId, err := dao.GetPartnerId(ctx, db, partner)
if err != nil {
return uuid.Nil, uuid.Nil, err
}
organizationId, err := dao.GetOrganizationId(ctx, s.db, org)
organizationId, err := dao.GetOrganizationId(ctx, db, org)
if err != nil {
return partnerId, uuid.Nil, err
}
@@ -65,7 +65,7 @@ func (s *roleService) getPartnerOrganization(ctx context.Context, db bun.IDB, ro
}
func (s *roleService) deleteRolePermissionMapping(ctx context.Context, db bun.IDB, rleId uuid.UUID, role *rolev3.Role) (*rolev3.Role, error) {
err := dao.DeleteX(ctx, s.db, "resource_role_id", rleId, &models.ResourceRolePermission{})
err := dao.DeleteX(ctx, db, "resource_role_id", rleId, &models.ResourceRolePermission{})
if err != nil {
return &rolev3.Role{}, err
}
@@ -87,7 +87,7 @@ func (s *roleService) createRolePermissionMapping(ctx context.Context, db bun.ID
var items []models.ResourceRolePermission
for _, p := range perms {
entity, err := dao.GetIdByName(ctx, s.db, p, &models.ResourcePermission{})
entity, err := dao.GetIdByName(ctx, db, p, &models.ResourcePermission{})
if err != nil {
return role, fmt.Errorf("unable to find role permission '%v'", p)
}
@@ -101,7 +101,7 @@ func (s *roleService) createRolePermissionMapping(ctx context.Context, db bun.ID
}
}
if len(items) > 0 {
_, err := dao.Create(ctx, s.db, &items)
_, err := dao.Create(ctx, db, &items)
if err != nil {
return role, err
}
@@ -313,7 +313,7 @@ func (s *roleService) Delete(ctx context.Context, role *rolev3.Role) (*rolev3.Ro
return &rolev3.Role{}, err
}
err = dao.Delete(ctx, s.db, rle.ID, rle)
err = dao.Delete(ctx, tx, rle.ID, rle)
if err != nil {
tx.Rollback()
return &rolev3.Role{}, err
@@ -345,7 +345,7 @@ func (s *roleService) toV3Role(ctx context.Context, db bun.IDB, role *rolev3.Rol
Labels: labels,
ModifiedAt: timestamppb.New(rle.ModifiedAt),
}
entities, err := dao.GetRolePermissions(ctx, s.db, rle.ID)
entities, err := dao.GetRolePermissions(ctx, db, rle.ID)
if err != nil {
return role, err
}

View File

@@ -454,7 +454,7 @@ func (s *userService) Delete(ctx context.Context, user *userv3.User) (*userrpcv3
return &userrpcv3.DeleteUserResponse{}, err
}
err = s.deleteUserRoleRelations(ctx, s.db, usr.ID, user)
err = s.deleteUserRoleRelations(ctx, tx, usr.ID, user)
if err != nil {
tx.Rollback()
return &userrpcv3.DeleteUserResponse{}, err
@@ -466,7 +466,7 @@ func (s *userService) Delete(ctx context.Context, user *userv3.User) (*userrpcv3
return &userrpcv3.DeleteUserResponse{}, err
}
err = dao.DeleteX(ctx, s.db, "account_id", usr.ID, &models.GroupAccount{})
err = dao.DeleteX(ctx, tx, "account_id", usr.ID, &models.GroupAccount{})
if err != nil {
tx.Rollback()
return &userrpcv3.DeleteUserResponse{}, fmt.Errorf("unable to delete user; %v", err)

View File

@@ -11,9 +11,9 @@ import (
"os"
"path"
"github.com/RafayLabs/rcloud-base/internal/dao"
"github.com/RafayLabs/rcloud-base/internal/models"
providers "github.com/RafayLabs/rcloud-base/internal/persistence/provider/kratos"
"github.com/RafayLabs/rcloud-base/internal/persistence/provider/pg"
providers "github.com/RafayLabs/rcloud-base/internal/provider/kratos"
"github.com/RafayLabs/rcloud-base/pkg/common"
"github.com/RafayLabs/rcloud-base/pkg/enforcer"
"github.com/RafayLabs/rcloud-base/pkg/service"
@@ -77,7 +77,7 @@ func addResourcePermissions(db *bun.DB, basePath string) error {
}
fmt.Println("Adding", len(items), "resource permissions")
_, err = pg.Create(context.Background(), db, &items)
_, err = dao.Create(context.Background(), db, &items)
return err
}
@@ -151,14 +151,14 @@ func main() {
if err != nil {
log.Fatal("unable to init enforcer", "error", err)
}
as := service.NewAuthzService(gormDb, enforcer)
as := service.NewAuthzService(db, enforcer)
ps := service.NewPartnerService(db)
os := service.NewOrganizationService(db)
rs := service.NewRoleService(db, as)
us := service.NewUserService(providers.NewKratosAuthProvider(kc), db, as, nil, common.CliConfigDownloadData{})
err = pg.HardDeleteAll(context.Background(), db, &models.ResourcePermission{})
err = dao.HardDeleteAll(context.Background(), db, &models.ResourcePermission{})
if err != nil {
log.Fatal(err)
}
@@ -193,7 +193,7 @@ func main() {
Spec: &rolev3.RoleSpec{IsGlobal: true, Scope: scope, Rolepermissions: perms},
})
if err != nil {
log.Fatal("unable to create rolepermission", scope, name, err)
log.Fatalf("unable to create rolepermission %s %s: %s", scope, name, err)
}
}
}