1.0.9 • Published 8 months ago

@permify/permify-node v1.0.9

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
8 months ago

This client makes it easy to interact with Permify from your Node.js application.

Installation

Use npm to install:

npm install @permify/permify-node

Use yarn to install (Please be aware that Yarn versions greater than v1.10.0 and less than v2 are not supported):

yarn add @permify/permify-node

How to use

Create a new tenant

import * as permify from "@permify/permify-node";

const client = permify.grpc.newClient({
    endpoint: "localhost:3478",
    cert: undefined,
    insecure: true
});

client.tenancy.create({
    id: "t1",
    name: "Tenant 1"
}).then((response) => {
    console.log(response);
    // handle response
})

Write Schema

import * as permify from "@permify/permify-node";

const client = permify.grpc.newClient({
    endpoint: "localhost:3478",
    cert: undefined,
    insecure: true
});

let schema = `
    entity user {}
    
    entity document {
       relation viewer @user
       
       action view = viewer
    }
`;

// Write the schema
client.tenancy.create({
    tenantId: "t1",
    schema: schema
}).then((response) => {
    // handle response
})

Write Relationships

import * as permify from "@permify/permify-node";

const client = permify.grpc.newClient({
    endpoint: "localhost:3478",
    cert: undefined,
    insecure: true
});

client.relationship.write({
    tenantId: "t1",
    metadata: {
        schemaVersion: ""
    },
    tuples: [{
        entity: {
            type: "document",
            id: "1"
        },
        relation: "viewer",
        subject: {
            type: "user",
            id: "1"
        }
    }]
}).then((response) => {
    // handle response
})

Check

import * as permify from "@permify/permify-node";

const client = permify.grpc.newClient({
    endpoint: "localhost:3478",
    cert: undefined,
    insecure: true
});

client.permission.check({
    tenantId: "t1",
    metadata: {
        snapToken: "",
        schemaVersion: "",
        depth: 20
    },
    entity: {
        type: "document",
        id: "1"
    },
    permission: "view",
    subject: {
        type: "user",
        id: "3"
    }
}).then((response) => {
    if (response.can === PermissionCheckResponse_Result.RESULT_ALLOWED) {
        console.log("RESULT_ALLOWED")
    } else {
        console.log("RESULT_DENIED")
    }
})

Streaming Calls

import * as permify from "@permify/permify-node";

function main() {
    const client = permify.grpc.newClient({
        endpoint: "localhost:3478",
        cert: undefined,
        insecure: true
    });

    let res = client.permission.lookupEntityStream({
        tenantId: "t1",
        metadata: {
            snapToken: "",
            schemaVersion: "",
            depth: 20
        },
        entityType: "document",
        permission: "view",
        subject: {
            type: "user",
            id: "1"
        }
    })

    handle(res)
}

async function handle(res: AsyncIterable<permify.grpc.payload.PermissionLookupEntityStreamResponse>) {
    for await (const response of res) {
        // response.entityId
    }
}

Interceptors

Access Token Interceptor

import * as permify from "@permify/permify-node";

const client = new permify.grpc.newClient({
    endpoint: "localhost:3478",
    cert: undefined,
    insecure: true
}, permify.grpc.newAccessTokenInterceptor("YOUR_TOKEN"))

Certs

import * as permify from "@permify/permify-node";
import fs from 'fs';

const cert = fs.readFileSync('path/to/cert.pem');

const client = new permify.grpc.newClient({
    endpoint: "localhost:3478",
    cert: cert,
    insecure: true
}, permify.grpc.newAccessTokenInterceptor("YOUR_TOKEN"))

Permify is an open-source authorization service for creating and maintaining fine-grained authorizations accross your individual applications and services.

Community & Support

Join our Discord channel for issues, feature requests, feedbacks or anything else. We love to talk about authorization and access control :heart:

1.0.9

8 months ago

1.0.8

8 months ago

1.0.7

9 months ago

0.4.9

10 months ago

0.4.8

10 months ago

1.0.5

9 months ago

1.0.4

9 months ago

1.0.3

9 months ago

0.4.7

10 months ago

0.4.6

1 year ago

0.4.5

2 years ago

0.3.7

2 years ago

0.4.1

2 years ago

0.4.0

2 years ago

0.4.3

2 years ago

0.4.2

2 years ago

0.3.6

2 years ago

0.3.5

2 years ago

0.3.4

2 years ago

0.3.3

2 years ago

0.3.2

2 years ago

0.1.0

2 years ago

0.3.0

2 years ago

0.2.0

2 years ago

0.3.1

2 years ago

2.0.0

3 years ago

1.4.0

3 years ago

1.3.0

3 years ago

1.2.0

3 years ago

1.1.0

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago