permify-node-demo
v0.0.9
Published
Permify Node Client
Downloads
22
Maintainers
Readme
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: