@permify/permify-node
v1.0.9
Published
Permify Node Client
Downloads
3,020
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 (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: