0.4.6 • Published 2 months ago

@permify/permify-node v0.4.6

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
2 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:

yarn add @permify/permify-node

How to use

Create a new tenant

const permify = require("@permify/permify-node");

const client = new permify.grpc.newClient({
    endpoint: "localhost:3478",
})

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

Write Schema

const permify = require("@permify/permify-node");

const client = new permify.grpc.newClient({
    endpoint: "localhost:3478",
})

client.schema.write({
    tenantId: "t1",
    schema: `
    entity user {}
    entity document {
         relation viewer @user
         action view = viewer
    }
    `
}).then((response) => {
    // handle response
})

Write Relationships

const permify = require("@permify/permify-node");

const client = new permify.grpc.newClient({
    endpoint: "localhost:3478",
})

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

const permify = require("@permify/permify-node");
const {PermissionCheckResponse_Result} = require("@permify/permify-node/dist/src/grpc/generated/base/v1/service");

const client = new permify.grpc.newClient({
    endpoint: "localhost:3478",
})

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

const permify = require("@permify/permify-node");
const {PermissionLookupEntityStreamResponse} = require("@permify/permify-node/dist/src/grpc/generated/base/v1/service");

function main() {
    const client = new permify.grpc.newClient({
        endpoint: "localhost:3478",
    })

    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<PermissionLookupEntityStreamResponse>) {
    for await (const response of res) {
        // response.entityId
    }
}

Interceptors

Access Token Interceptor

const permify = require("@permify/permify-node");
const {newAccessTokenInterceptor} = require("@permify/permify-node/dist/src/grpc");

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

Certs

import {grpc as permifyGrpcClient} from "@permify/permify-node";
import {newAccessTokenInterceptor} from "@permify/permify-node/dist/src/grpc";
import fs from 'fs';

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

const client = new permifyGrpcClient.newClient({
    endpoint: "localhost:3478",
    cert: cert,
}, 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:

0.4.6

2 months ago

0.4.5

5 months ago

0.3.7

10 months ago

0.4.1

7 months ago

0.4.0

8 months ago

0.4.3

6 months ago

0.4.2

6 months ago

0.3.6

11 months ago

0.3.5

11 months ago

0.3.4

11 months ago

0.3.3

11 months ago

0.3.2

1 year ago

0.1.0

1 year ago

0.3.0

1 year ago

0.2.0

1 year ago

0.3.1

1 year ago

2.0.0

2 years ago

1.4.0

2 years ago

1.3.0

2 years ago

1.2.0

2 years ago

1.1.0

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago