• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ory / keto / 10166504429

30 Jul 2024 04:53PM CUT coverage: 77.612%. First build
10166504429

Pull #1559

github

zepatrik
chore: bump ory/x
Pull Request #1559: chore: bump dependencies

5734 of 7388 relevant lines covered (77.61%)

489.75 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/contrib/docs-code-samples/expand-api-display-access/00-create-tuples/main.go
1
// Copyright © 2023 Ory Corp
2
// SPDX-License-Identifier: Apache-2.0
3

4
package main
5

6
import (
7
        "context"
8
        "fmt"
9

10
        rts "github.com/ory/keto/proto/ory/keto/relation_tuples/v1alpha2"
11

12
        "google.golang.org/grpc"
13
        "google.golang.org/grpc/credentials/insecure"
14
)
15

16
func main() {
×
17
        conn, err := grpc.Dial("127.0.0.1:4467", grpc.WithTransportCredentials(insecure.NewCredentials()))
×
18
        if err != nil {
×
19
                panic("Encountered error: " + err.Error())
×
20
        }
21

22
        client := rts.NewWriteServiceClient(conn)
×
23

×
24
        //directories:/photos#owner@maureen
×
25
        //files:/photos/beach.jpg#owner@maureen
×
26
        //files:/photos/mountains.jpg#owner@laura
×
27
        //directories:/photos#access@laura
×
28
        //directories:/photos#access@(directories:/photos#owner)
×
29
        //files:/photos/beach.jpg#access@(files:/photos/beach.jpg#owner)
×
30
        //files:/photos/beach.jpg#access@(directories:/photos#access)
×
31
        //files:/photos/mountains.jpg#access@(files:/photos/mountains.jpg#owner)
×
32
        //files:/photos/mountains.jpg#access@(directories:/photos#access)
×
33

×
34
        tuples := []*rts.RelationTuple{
×
35
                // ownership
×
36
                {
×
37
                        Namespace: "directories",
×
38
                        Object:    "/photos",
×
39
                        Relation:  "owner",
×
40
                        Subject:   rts.NewSubjectID("maureen"),
×
41
                },
×
42
                {
×
43
                        Namespace: "files",
×
44
                        Object:    "/photos/beach.jpg",
×
45
                        Relation:  "owner",
×
46
                        Subject:   rts.NewSubjectID("maureen"),
×
47
                },
×
48
                {
×
49
                        Namespace: "files",
×
50
                        Object:    "/photos/mountains.jpg",
×
51
                        Relation:  "owner",
×
52
                        Subject:   rts.NewSubjectID("laura"),
×
53
                },
×
54
                // granted access
×
55
                {
×
56
                        Namespace: "directories",
×
57
                        Object:    "/photos",
×
58
                        Relation:  "access",
×
59
                        Subject:   rts.NewSubjectID("laura"),
×
60
                },
×
61
        }
×
62
        // should be subject set rewrite
×
63
        // owners have access
×
64
        for _, o := range []struct{ n, o string }{
×
65
                {"files", "/photos/beach.jpg"},
×
66
                {"files", "/photos/mountains.jpg"},
×
67
                {"directories", "/photos"},
×
68
        } {
×
69
                tuples = append(tuples, &rts.RelationTuple{
×
70
                        Namespace: o.n,
×
71
                        Object:    o.o,
×
72
                        Relation:  "access",
×
73
                        Subject:   rts.NewSubjectSet(o.n, o.o, "owner"),
×
74
                })
×
75
        }
×
76
        // should be subject set rewrite
77
        // access on parent means access on child
78
        for _, obj := range []string{"/photos/beach.jpg", "/photos/mountains.jpg"} {
×
79
                tuples = append(tuples, &rts.RelationTuple{
×
80
                        Namespace: "files",
×
81
                        Object:    obj,
×
82
                        Relation:  "access",
×
83
                        Subject:   rts.NewSubjectSet("directories", "/photos", "access"),
×
84
                })
×
85
        }
×
86

87
        _, err = client.TransactRelationTuples(context.Background(), &rts.TransactRelationTuplesRequest{
×
88
                RelationTupleDeltas: rts.RelationTupleToDeltas(tuples, rts.RelationTupleDelta_ACTION_INSERT),
×
89
        })
×
90
        if err != nil {
×
91
                panic("Encountered error: " + err.Error())
×
92
        }
93

94
        fmt.Println("Successfully created tuples")
×
95
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc