Skip to content

Commit 59a4315

Browse files
committed
remove hook group enforcement check
1 parent aa65e24 commit 59a4315

2 files changed

Lines changed: 21 additions & 113 deletions

File tree

internal/ent/hooks/trustcenterndarequest.go

Lines changed: 2 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -222,16 +222,10 @@ func HookTrustCenterNDARequestUpdate() ent.Hook {
222222
}
223223
}
224224

225-
if !ok || (status != enums.TrustCenterNDARequestStatusApproved && status != enums.TrustCenterNDARequestStatusSigned && status != enums.TrustCenterNDARequestStatusDeclined) {
225+
if !ok || (status != enums.TrustCenterNDARequestStatusApproved && status != enums.TrustCenterNDARequestStatusSigned) {
226226
return next.Mutate(ctx, m)
227227
}
228228

229-
if status == enums.TrustCenterNDARequestStatusApproved || status == enums.TrustCenterNDARequestStatusDeclined {
230-
if err := checkNDAApprover(ctx, m); err != nil {
231-
return nil, err
232-
}
233-
}
234-
235229
// if approved or signed, set the timestamp in the ISO8601 format
236230
now, err := models.ToDateTime(time.Now().UTC().Format(time.RFC3339))
237231
if err != nil {
@@ -249,10 +243,6 @@ func HookTrustCenterNDARequestUpdate() ent.Hook {
249243
return retVal, nil
250244
}
251245

252-
if status == enums.TrustCenterNDARequestStatusDeclined {
253-
return next.Mutate(ctx, m)
254-
}
255-
256246
m.SetApprovedAt(*now)
257247

258248
v, err := next.Mutate(ctx, m)
@@ -278,54 +268,6 @@ func HookTrustCenterNDARequestUpdate() ent.Hook {
278268
}, ent.OpUpdateOne|ent.OpUpdate|ent.OpDeleteOne)
279269
}
280270

281-
func checkNDAApprover(ctx context.Context, m *generated.TrustCenterNDARequestMutation) error {
282-
caller, ok := auth.CallerFromContext(ctx)
283-
if !ok || caller == nil || caller.IsAnonymous() {
284-
return privacy.Denyf("NDA approval requires an authenticated user")
285-
}
286-
287-
allowCtx := privacy.DecisionContext(ctx, privacy.Allow)
288-
289-
ids, err := m.IDs(allowCtx)
290-
if err != nil {
291-
return err
292-
}
293-
294-
requests, err := m.Client().TrustCenterNDARequest.Query().
295-
Where(trustcenterndarequest.IDIn(ids...)).
296-
Select(trustcenterndarequest.FieldTrustCenterID).
297-
All(allowCtx)
298-
if err != nil {
299-
return err
300-
}
301-
302-
trustCenterIDs := make(map[string]struct{}, len(requests))
303-
for _, request := range requests {
304-
trustCenterIDs[request.TrustCenterID] = struct{}{}
305-
}
306-
307-
for id := range trustCenterIDs {
308-
tc, err := m.Client().TrustCenter.Query().
309-
Where(trustcenter.IDEQ(id)).
310-
WithSetting().
311-
Only(allowCtx)
312-
if err != nil {
313-
return err
314-
}
315-
316-
approverIDs, err := getNDAApproverUserIDs(ctx, m.Client(), tc.OwnerID, tc.Edges.Setting)
317-
if err != nil {
318-
return err
319-
}
320-
321-
if !lo.Contains(approverIDs, caller.SubjectID) {
322-
return privacy.Denyf("request denied because user is not an NDA approver")
323-
}
324-
}
325-
326-
return nil
327-
}
328-
329271
func handleNDARequestDelete(ctx context.Context, m *generated.TrustCenterNDARequestMutation) error {
330272
id, ok := m.ID()
331273
if !ok {
@@ -395,7 +337,7 @@ func createNDARequestNotification(ctx context.Context, ndaRequest *generated.Tru
395337
return err
396338
}
397339

398-
// ndaApproverRoles are the organization roles permitted to review and approve trust center NDA requests
340+
// ndaApproverRoles are the fallback organization roles notified when no NDA approver group is configured.
399341
var ndaApproverRoles = []enums.Role{enums.RoleOwner, enums.RoleSuperAdmin, enums.RoleAdmin}
400342

401343
func sendNDAApprovalRequestEmails(ctx context.Context, client *generated.Client, ndaRequest *generated.TrustCenterNDARequest, tc *generated.TrustCenter) error {

internal/graphapi/trustcenterndarequest_test.go

Lines changed: 19 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -524,7 +524,7 @@ func TestMutationUpdateTrustCenterNDARequest(t *testing.T) {
524524
cleanupOrganizationDataWithContext(tcOrg.owner.UserCtx, t)
525525
}
526526

527-
func TestMutationTrustCenterNDARequestApprovalUsesConfiguredGroup(t *testing.T) {
527+
func TestMutationTrustCenterNDARequestApprovalEmailsUseConfiguredGroup(t *testing.T) {
528528
trustcenterOrg := createFreshOrgWithTrustCenter(t, withNDATemplate(), withAllUserTypes())
529529
trustCenter := trustcenterOrg.trustCenter
530530

@@ -559,27 +559,12 @@ func TestMutationTrustCenterNDARequestApprovalUsesConfiguredGroup(t *testing.T)
559559
assert.Assert(t, lo.Contains(msgs[0].To, trustcenterOrg.member.UserInfo.Email), "expected approval email to go to configured group member")
560560
assert.Assert(t, !lo.Contains(msgs[0].To, trustcenterOrg.owner.UserInfo.Email), "expected owner not to receive approval email when group is configured")
561561
assert.Assert(t, !lo.Contains(msgs[0].To, trustcenterOrg.admin.UserInfo.Email), "expected admin not to receive approval email when group is configured")
562-
563-
err = suite.client.db.TrustCenterNDARequest.UpdateOneID(req.CreateTrustCenterNDARequest.TrustCenterNDARequest.ID).
564-
SetStatus(enums.TrustCenterNDARequestStatusApproved).
565-
Exec(setContext(trustcenterOrg.admin.UserCtx, suite.client.db))
566-
assert.ErrorContains(t, err, "not an NDA approver")
567-
568-
err = suite.client.db.Job.TruncateRiverTables(trustcenterOrg.member.UserCtx)
569-
assert.NilError(t, err)
570-
suite.mockEmailSender().Reset()
571-
572-
resp, err := suite.client.db.TrustCenterNDARequest.UpdateOneID(req.CreateTrustCenterNDARequest.TrustCenterNDARequest.ID).
573-
SetStatus(enums.TrustCenterNDARequestStatusApproved).
574-
Save(setContext(trustcenterOrg.member.UserCtx, suite.client.db))
575-
assert.NilError(t, err)
576-
assert.Equal(t, enums.TrustCenterNDARequestStatusApproved, resp.Status)
577-
suite.WaitForEvents()
562+
assert.Assert(t, !lo.Contains(msgs[0].To, trustcenterOrg.superAdmin.UserInfo.Email), "expected super admin not to receive approval email when group is configured")
578563

579564
cleanupOrganizationDataWithContext(trustcenterOrg.owner.UserCtx, t)
580565
}
581566

582-
func TestMutationTrustCenterNDARequestApprovalFallsBackToOwnersAndAdmins(t *testing.T) {
567+
func TestMutationTrustCenterNDARequestApprovalEmailsFallBackToApproverRoles(t *testing.T) {
583568
trustcenterOrg := createFreshOrgWithTrustCenter(t, withNDATemplate(), withAllUserTypes())
584569
trustCenter := trustcenterOrg.trustCenter
585570

@@ -590,46 +575,27 @@ func TestMutationTrustCenterNDARequestApprovalFallsBackToOwnersAndAdmins(t *test
590575
})
591576
assert.NilError(t, err)
592577

593-
createRequestFn := func(email string) string {
594-
t.Helper()
595-
596-
req, err := suite.client.api.CreateTrustCenterNDARequest(trustcenterOrg.owner.UserCtx, testclient.CreateTrustCenterNDARequestInput{
597-
FirstName: gofakeit.FirstName(),
598-
LastName: gofakeit.LastName(),
599-
Email: email,
600-
TrustCenterID: &trustCenter.ID,
601-
})
602-
assert.NilError(t, err)
603-
assert.Equal(t, enums.TrustCenterNDARequestStatusNeedsApproval, *req.CreateTrustCenterNDARequest.TrustCenterNDARequest.Status)
604-
605-
return req.CreateTrustCenterNDARequest.TrustCenterNDARequest.ID
606-
}
607-
608-
ownerApprovedID := createRequestFn(gofakeit.Email())
609-
err = suite.client.db.TrustCenterNDARequest.UpdateOneID(ownerApprovedID).
610-
SetStatus(enums.TrustCenterNDARequestStatusApproved).
611-
Exec(setContext(trustcenterOrg.owner.UserCtx, suite.client.db))
612-
assert.NilError(t, err)
613-
614-
adminApprovedID := createRequestFn(gofakeit.Email())
615-
err = suite.client.db.TrustCenterNDARequest.UpdateOneID(adminApprovedID).
616-
SetStatus(enums.TrustCenterNDARequestStatusApproved).
617-
Exec(setContext(trustcenterOrg.admin.UserCtx, suite.client.db))
578+
err = suite.client.db.Job.TruncateRiverTables(trustcenterOrg.owner.UserCtx)
618579
assert.NilError(t, err)
580+
suite.mockEmailSender().Reset()
619581

620-
superAdminApprovedID := createRequestFn(gofakeit.Email())
621-
err = suite.client.db.TrustCenterNDARequest.UpdateOneID(superAdminApprovedID).
622-
SetStatus(enums.TrustCenterNDARequestStatusApproved).
623-
Exec(setContext(trustcenterOrg.superAdmin.UserCtx, suite.client.db))
582+
req, err := suite.client.api.CreateTrustCenterNDARequest(trustcenterOrg.owner.UserCtx, testclient.CreateTrustCenterNDARequestInput{
583+
FirstName: gofakeit.FirstName(),
584+
LastName: gofakeit.LastName(),
585+
Email: gofakeit.Email(),
586+
TrustCenterID: &trustCenter.ID,
587+
})
624588
assert.NilError(t, err)
625-
626-
memberDeniedID := createRequestFn(gofakeit.Email())
627-
err = suite.client.db.TrustCenterNDARequest.UpdateOneID(memberDeniedID).
628-
SetStatus(enums.TrustCenterNDARequestStatusDeclined).
629-
Exec(setContext(trustcenterOrg.member.UserCtx, suite.client.db))
630-
assert.ErrorContains(t, err, "not an NDA approver")
589+
assert.Equal(t, enums.TrustCenterNDARequestStatusNeedsApproval, *req.CreateTrustCenterNDARequest.TrustCenterNDARequest.Status)
631590
suite.WaitForEvents()
632591

592+
msgs := suite.mockEmailSender().Messages()
593+
assert.Assert(t, len(msgs) == 1, "expected 1 email, got multiple ( %d )", len(msgs))
594+
assert.Assert(t, lo.Contains(msgs[0].To, trustcenterOrg.owner.UserInfo.Email), "expected approval email to go to owner when no group is configured")
595+
assert.Assert(t, lo.Contains(msgs[0].To, trustcenterOrg.admin.UserInfo.Email), "expected approval email to go to admin when no group is configured")
596+
assert.Assert(t, lo.Contains(msgs[0].To, trustcenterOrg.superAdmin.UserInfo.Email), "expected approval email to go to super admin when no group is configured")
597+
assert.Assert(t, !lo.Contains(msgs[0].To, trustcenterOrg.member.UserInfo.Email), "expected member not to receive approval email when no group is configured")
598+
633599
cleanupOrganizationDataWithContext(trustcenterOrg.owner.UserCtx, t)
634600
}
635601

0 commit comments

Comments
 (0)