Skip to content

Commit c9abeb1

Browse files
authored
Export service fields (#83)
* Export service fields to allow repos and services to be extended * Rename GetByObjectId to match service and repository methods * Fix user usages and add warrant service exports
1 parent 743cd5b commit c9abeb1

File tree

13 files changed

+219
-219
lines changed

13 files changed

+219
-219
lines changed

pkg/authz/check/service.go

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -15,29 +15,29 @@ import (
1515

1616
type CheckService struct {
1717
service.BaseService
18-
warrantRepo warrant.WarrantRepository
19-
eventSvc event.EventService
20-
ctxSvc wntContext.ContextService
21-
objectTypeSvc objecttype.ObjectTypeService
18+
WarrantRepository warrant.WarrantRepository
19+
EventSvc event.EventService
20+
CtxSvc wntContext.ContextService
21+
ObjectTypeSvc objecttype.ObjectTypeService
2222
}
2323

2424
func NewService(env service.Env, warrantRepo warrant.WarrantRepository, ctxSvc wntContext.ContextService, eventSvc event.EventService, objectTypeSvc objecttype.ObjectTypeService) CheckService {
2525
return CheckService{
26-
BaseService: service.NewBaseService(env),
27-
warrantRepo: warrantRepo,
28-
ctxSvc: ctxSvc,
29-
eventSvc: eventSvc,
30-
objectTypeSvc: objectTypeSvc,
26+
BaseService: service.NewBaseService(env),
27+
WarrantRepository: warrantRepo,
28+
CtxSvc: ctxSvc,
29+
EventSvc: eventSvc,
30+
ObjectTypeSvc: objectTypeSvc,
3131
}
3232
}
3333

3434
func (svc CheckService) getWithContextMatch(ctx context.Context, spec warrant.WarrantSpec) (*warrant.WarrantSpec, error) {
35-
warrant, err := svc.warrantRepo.GetWithContextMatch(ctx, spec.ObjectType, spec.ObjectId, spec.Relation, spec.Subject.ObjectType, spec.Subject.ObjectId, spec.Subject.Relation, spec.Context.ToHash())
35+
warrant, err := svc.WarrantRepository.GetWithContextMatch(ctx, spec.ObjectType, spec.ObjectId, spec.Relation, spec.Subject.ObjectType, spec.Subject.ObjectId, spec.Subject.Relation, spec.Context.ToHash())
3636
if err != nil || warrant == nil {
3737
return nil, err
3838
}
3939

40-
contextSetSpec, err := svc.ctxSvc.ListByWarrantId(ctx, []int64{warrant.GetID()})
40+
contextSetSpec, err := svc.CtxSvc.ListByWarrantId(ctx, []int64{warrant.GetID()})
4141
if err != nil {
4242
return nil, err
4343
}
@@ -51,7 +51,7 @@ func (svc CheckService) getMatchingSubjects(ctx context.Context, objectType stri
5151
log.Debug().Msgf("Getting matching subjects for %s:%s#%s@%s:___%s", objectType, objectId, relation, subjectType, wntCtx)
5252

5353
warrantSpecs := make([]warrant.WarrantSpec, 0)
54-
objectTypeSpec, err := svc.objectTypeSvc.GetByTypeId(ctx, objectType)
54+
objectTypeSpec, err := svc.ObjectTypeSvc.GetByTypeId(ctx, objectType)
5555
if err != nil {
5656
return warrantSpecs, err
5757
}
@@ -60,7 +60,7 @@ func (svc CheckService) getMatchingSubjects(ctx context.Context, objectType stri
6060
return warrantSpecs, nil
6161
}
6262

63-
warrants, err := svc.warrantRepo.GetAllMatchingObjectAndRelation(
63+
warrants, err := svc.WarrantRepository.GetAllMatchingObjectAndRelation(
6464
ctx,
6565
objectType,
6666
objectId,
@@ -81,7 +81,7 @@ func (svc CheckService) getMatchingSubjects(ctx context.Context, objectType stri
8181
return warrantSpecs, err
8282
}
8383

84-
warrants, err = svc.warrantRepo.GetAllMatchingWildcard(
84+
warrants, err = svc.WarrantRepository.GetAllMatchingWildcard(
8585
ctx,
8686
objectType,
8787
objectId,
@@ -357,7 +357,7 @@ func (svc CheckService) Check(ctx context.Context, authInfo *service.AuthInfo, w
357357
}
358358

359359
// Attempt to match against defined rules for target relation
360-
objectTypeSpec, err := svc.objectTypeSvc.GetByTypeId(ctx, warrantCheck.ObjectType)
360+
objectTypeSpec, err := svc.ObjectTypeSvc.GetByTypeId(ctx, warrantCheck.ObjectType)
361361
if err != nil {
362362
return false, decisionPath, err
363363
}
@@ -369,15 +369,15 @@ func (svc CheckService) Check(ctx context.Context, authInfo *service.AuthInfo, w
369369
}
370370

371371
if match {
372-
err := svc.eventSvc.TrackAccessAllowedEvent(ctx, warrantCheck.ObjectType, warrantCheck.ObjectId, warrantCheck.Relation, warrantCheck.Subject.ObjectType, warrantCheck.Subject.ObjectId, warrantCheck.Subject.Relation, warrantCheck.Context)
372+
err := svc.EventSvc.TrackAccessAllowedEvent(ctx, warrantCheck.ObjectType, warrantCheck.ObjectId, warrantCheck.Relation, warrantCheck.Subject.ObjectType, warrantCheck.Subject.ObjectId, warrantCheck.Subject.Relation, warrantCheck.Context)
373373
if err != nil {
374374
return false, decisionPath, err
375375
}
376376

377377
return true, decisionPath, nil
378378
}
379379

380-
err = svc.eventSvc.TrackAccessDeniedEvent(ctx, warrantCheck.ObjectType, warrantCheck.ObjectId, warrantCheck.Relation, warrantCheck.Subject.ObjectType, warrantCheck.Subject.ObjectId, warrantCheck.Subject.Relation, warrantCheck.Context)
380+
err = svc.EventSvc.TrackAccessDeniedEvent(ctx, warrantCheck.ObjectType, warrantCheck.ObjectId, warrantCheck.Relation, warrantCheck.Subject.ObjectType, warrantCheck.Subject.ObjectId, warrantCheck.Subject.Relation, warrantCheck.Context)
381381
if err != nil {
382382
return false, decisionPath, err
383383
}

pkg/authz/feature/service.go

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -14,44 +14,44 @@ const ResourceTypeFeature = "feature"
1414

1515
type FeatureService struct {
1616
service.BaseService
17-
repo FeatureRepository
18-
eventSvc event.EventService
19-
objectSvc object.ObjectService
17+
Repository FeatureRepository
18+
EventSvc event.EventService
19+
ObjectSvc object.ObjectService
2020
}
2121

22-
func NewService(env service.Env, repo FeatureRepository, eventSvc event.EventService, objectSvc object.ObjectService) FeatureService {
22+
func NewService(env service.Env, repository FeatureRepository, eventSvc event.EventService, objectSvc object.ObjectService) FeatureService {
2323
return FeatureService{
2424
BaseService: service.NewBaseService(env),
25-
repo: repo,
26-
eventSvc: eventSvc,
27-
objectSvc: objectSvc,
25+
Repository: repository,
26+
EventSvc: eventSvc,
27+
ObjectSvc: objectSvc,
2828
}
2929
}
3030

3131
func (svc FeatureService) Create(ctx context.Context, featureSpec FeatureSpec) (*FeatureSpec, error) {
3232
var newFeature Model
3333
err := svc.Env().DB().WithinTransaction(ctx, func(txCtx context.Context) error {
34-
createdObject, err := svc.objectSvc.Create(txCtx, *featureSpec.ToObjectSpec())
34+
createdObject, err := svc.ObjectSvc.Create(txCtx, *featureSpec.ToObjectSpec())
3535
if err != nil {
3636
return err
3737
}
3838

39-
_, err = svc.repo.GetByFeatureId(txCtx, featureSpec.FeatureId)
39+
_, err = svc.Repository.GetByFeatureId(txCtx, featureSpec.FeatureId)
4040
if err == nil {
4141
return service.NewDuplicateRecordError("Feature", featureSpec.FeatureId, "A feature with the given featureId already exists")
4242
}
4343

44-
newFeatureId, err := svc.repo.Create(txCtx, featureSpec.ToFeature(createdObject.ID))
44+
newFeatureId, err := svc.Repository.Create(txCtx, featureSpec.ToFeature(createdObject.ID))
4545
if err != nil {
4646
return err
4747
}
4848

49-
newFeature, err = svc.repo.GetById(txCtx, newFeatureId)
49+
newFeature, err = svc.Repository.GetById(txCtx, newFeatureId)
5050
if err != nil {
5151
return err
5252
}
5353

54-
err = svc.eventSvc.TrackResourceCreated(ctx, ResourceTypeFeature, newFeature.GetFeatureId(), newFeature.ToFeatureSpec())
54+
err = svc.EventSvc.TrackResourceCreated(ctx, ResourceTypeFeature, newFeature.GetFeatureId(), newFeature.ToFeatureSpec())
5555
if err != nil {
5656
return err
5757
}
@@ -67,7 +67,7 @@ func (svc FeatureService) Create(ctx context.Context, featureSpec FeatureSpec) (
6767
}
6868

6969
func (svc FeatureService) GetByFeatureId(ctx context.Context, featureId string) (*FeatureSpec, error) {
70-
feature, err := svc.repo.GetByFeatureId(ctx, featureId)
70+
feature, err := svc.Repository.GetByFeatureId(ctx, featureId)
7171
if err != nil {
7272
return nil, err
7373
}
@@ -77,7 +77,7 @@ func (svc FeatureService) GetByFeatureId(ctx context.Context, featureId string)
7777

7878
func (svc FeatureService) List(ctx context.Context, listParams middleware.ListParams) ([]FeatureSpec, error) {
7979
featureSpecs := make([]FeatureSpec, 0)
80-
features, err := svc.repo.List(ctx, listParams)
80+
features, err := svc.Repository.List(ctx, listParams)
8181
if err != nil {
8282
return featureSpecs, nil
8383
}
@@ -90,25 +90,25 @@ func (svc FeatureService) List(ctx context.Context, listParams middleware.ListPa
9090
}
9191

9292
func (svc FeatureService) UpdateByFeatureId(ctx context.Context, featureId string, featureSpec UpdateFeatureSpec) (*FeatureSpec, error) {
93-
currentFeature, err := svc.repo.GetByFeatureId(ctx, featureId)
93+
currentFeature, err := svc.Repository.GetByFeatureId(ctx, featureId)
9494
if err != nil {
9595
return nil, err
9696
}
9797

9898
currentFeature.SetName(featureSpec.Name)
9999
currentFeature.SetDescription(featureSpec.Description)
100-
err = svc.repo.UpdateByFeatureId(ctx, featureId, currentFeature)
100+
err = svc.Repository.UpdateByFeatureId(ctx, featureId, currentFeature)
101101
if err != nil {
102102
return nil, err
103103
}
104104

105-
updatedFeature, err := svc.repo.GetByFeatureId(ctx, featureId)
105+
updatedFeature, err := svc.Repository.GetByFeatureId(ctx, featureId)
106106
if err != nil {
107107
return nil, err
108108
}
109109

110110
updatedFeatureSpec := updatedFeature.ToFeatureSpec()
111-
err = svc.eventSvc.TrackResourceUpdated(ctx, ResourceTypeFeature, updatedFeature.GetFeatureId(), updatedFeatureSpec)
111+
err = svc.EventSvc.TrackResourceUpdated(ctx, ResourceTypeFeature, updatedFeature.GetFeatureId(), updatedFeatureSpec)
112112
if err != nil {
113113
return nil, err
114114
}
@@ -118,17 +118,17 @@ func (svc FeatureService) UpdateByFeatureId(ctx context.Context, featureId strin
118118

119119
func (svc FeatureService) DeleteByFeatureId(ctx context.Context, featureId string) error {
120120
err := svc.Env().DB().WithinTransaction(ctx, func(txCtx context.Context) error {
121-
err := svc.repo.DeleteByFeatureId(txCtx, featureId)
121+
err := svc.Repository.DeleteByFeatureId(txCtx, featureId)
122122
if err != nil {
123123
return err
124124
}
125125

126-
err = svc.objectSvc.DeleteByObjectTypeAndId(txCtx, objecttype.ObjectTypeFeature, featureId)
126+
err = svc.ObjectSvc.DeleteByObjectTypeAndId(txCtx, objecttype.ObjectTypeFeature, featureId)
127127
if err != nil {
128128
return err
129129
}
130130

131-
err = svc.eventSvc.TrackResourceDeleted(ctx, ResourceTypeFeature, featureId, nil)
131+
err = svc.EventSvc.TrackResourceDeleted(ctx, ResourceTypeFeature, featureId, nil)
132132
if err != nil {
133133
return err
134134
}

pkg/authz/object/handlers.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ func ListHandler(svc ObjectService, w http.ResponseWriter, r *http.Request) erro
7979
func GetHandler(svc ObjectService, w http.ResponseWriter, r *http.Request) error {
8080
objectType := mux.Vars(r)["objectType"]
8181
objectIdParam := mux.Vars(r)["objectId"]
82-
object, err := svc.GetByObjectId(r.Context(), objectType, objectIdParam)
82+
object, err := svc.GetByObjectTypeAndId(r.Context(), objectType, objectIdParam)
8383
if err != nil {
8484
return err
8585
}

pkg/authz/object/service.go

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,32 +12,32 @@ import (
1212

1313
type ObjectService struct {
1414
service.BaseService
15-
repo ObjectRepository
16-
eventSvc event.EventService
17-
warrantSvc warrant.WarrantService
15+
Repository ObjectRepository
16+
EventSvc event.EventService
17+
WarrantSvc warrant.WarrantService
1818
}
1919

20-
func NewService(env service.Env, repo ObjectRepository, eventSvc event.EventService, warrantSvc warrant.WarrantService) ObjectService {
20+
func NewService(env service.Env, repository ObjectRepository, eventSvc event.EventService, warrantSvc warrant.WarrantService) ObjectService {
2121
return ObjectService{
2222
BaseService: service.NewBaseService(env),
23-
repo: repo,
24-
eventSvc: eventSvc,
25-
warrantSvc: warrantSvc,
23+
Repository: repository,
24+
EventSvc: eventSvc,
25+
WarrantSvc: warrantSvc,
2626
}
2727
}
2828

2929
func (svc ObjectService) Create(ctx context.Context, objectSpec ObjectSpec) (*ObjectSpec, error) {
30-
_, err := svc.repo.GetByObjectTypeAndId(ctx, objectSpec.ObjectType, objectSpec.ObjectId)
30+
_, err := svc.Repository.GetByObjectTypeAndId(ctx, objectSpec.ObjectType, objectSpec.ObjectId)
3131
if err == nil {
3232
return nil, service.NewDuplicateRecordError("Object", fmt.Sprintf("%s:%s", objectSpec.ObjectType, objectSpec.ObjectId), "An object with the given objectType and objectId already exists")
3333
}
3434

35-
newObjectId, err := svc.repo.Create(ctx, *objectSpec.ToObject())
35+
newObjectId, err := svc.Repository.Create(ctx, *objectSpec.ToObject())
3636
if err != nil {
3737
return nil, err
3838
}
3939

40-
newObject, err := svc.repo.GetById(ctx, newObjectId)
40+
newObject, err := svc.Repository.GetById(ctx, newObjectId)
4141
if err != nil {
4242
return nil, err
4343
}
@@ -47,12 +47,12 @@ func (svc ObjectService) Create(ctx context.Context, objectSpec ObjectSpec) (*Ob
4747

4848
func (svc ObjectService) DeleteByObjectTypeAndId(ctx context.Context, objectType string, objectId string) error {
4949
err := svc.Env().DB().WithinTransaction(ctx, func(txCtx context.Context) error {
50-
err := svc.repo.DeleteByObjectTypeAndId(txCtx, objectType, objectId)
50+
err := svc.Repository.DeleteByObjectTypeAndId(txCtx, objectType, objectId)
5151
if err != nil {
5252
return err
5353
}
5454

55-
err = svc.warrantSvc.DeleteRelatedWarrants(txCtx, objectType, objectId)
55+
err = svc.WarrantSvc.DeleteRelatedWarrants(txCtx, objectType, objectId)
5656
if err != nil {
5757
return err
5858
}
@@ -63,8 +63,8 @@ func (svc ObjectService) DeleteByObjectTypeAndId(ctx context.Context, objectType
6363
return err
6464
}
6565

66-
func (svc ObjectService) GetByObjectId(ctx context.Context, objectType string, objectId string) (*ObjectSpec, error) {
67-
object, err := svc.repo.GetByObjectTypeAndId(ctx, objectType, objectId)
66+
func (svc ObjectService) GetByObjectTypeAndId(ctx context.Context, objectType string, objectId string) (*ObjectSpec, error) {
67+
object, err := svc.Repository.GetByObjectTypeAndId(ctx, objectType, objectId)
6868
if err != nil {
6969
return nil, err
7070
}
@@ -74,7 +74,7 @@ func (svc ObjectService) GetByObjectId(ctx context.Context, objectType string, o
7474

7575
func (svc ObjectService) List(ctx context.Context, filterOptions *FilterOptions, listParams middleware.ListParams) ([]ObjectSpec, error) {
7676
objectSpecs := make([]ObjectSpec, 0)
77-
objects, err := svc.repo.List(ctx, filterOptions, listParams)
77+
objects, err := svc.Repository.List(ctx, filterOptions, listParams)
7878
if err != nil {
7979
return objectSpecs, err
8080
}

0 commit comments

Comments
 (0)