package graph import ( "context" "forge.cadoles.com/Cadoles/daddy/internal/model" errs "github.com/pkg/errors" ) func handleIsAuthorized(ctx context.Context, action string, obj model.AuthorizationObject) (bool, error) { db, err := getDB(ctx) if err != nil { return false, errs.WithStack(err) } var object interface{} switch { case obj.WorkgroupID != nil: repo := model.NewWorkgroupRepository(db) workgroup, err := repo.Find(ctx, *obj.WorkgroupID) if err != nil { return false, errs.WithStack(err) } object = workgroup case obj.DecisionSupportFileID != nil: repo := model.NewDSFRepository(db) dsf, err := repo.Find(ctx, *obj.DecisionSupportFileID) if err != nil { return false, errs.WithStack(err) } object = dsf case obj.UserID != nil: repo := model.NewUserRepository(db) user, err := repo.Find(ctx, *obj.UserID) if err != nil { return false, errs.WithStack(err) } object = user default: return false, errs.WithStack(ErrInvalidInput) } authorized, err := isAuthorized(ctx, object, model.Action(action)) if err != nil { return false, errs.WithStack(err) } return authorized, nil }