Real-time Chat Blog

Granting and Revoking Permissions – Private Chat API

3 min read Michael Carroll on Sep 9, 2014
Try PubNub Today

Free up to 1MM monthly messages. No credit card required.

Subscribe to our newsletter

By submitting this form, you are agreeing to our Terms and Conditions and Privacy Policy.

With our private chat API, in this tutorial, we'll show you how to grant and revoke permissions and access to chat users for secure private chat.

Waving Hand

Good News! We’ve launched an all new Chat Resource Center.

We recommend checking out our new Chat Resource Center, which includes overviews, tutorials, and design patterns for building and deploying mobile and web chat.

Take me to the Chat Resource Center →

Now that we’re just about done setting up our private chatrooms with private channels, and adding access control and chat alert popups, we’re ready to grant access to channels. This will allow us to grant or revoke access to private channels.

We’ve now covered both building a multiplayer game lobby with a chatroom and the different ways we can use matchmaking to connect two different users. Here’s what we’ve covered so far:

This blog post is Part Eleven of PubNub Developer Evangelist Ian Jennings‘s series on creating a multiplayer game with JavaScript.

Getting Started with the Private Chat API to Grant/Revoke Access

You’ll first need to sign up for a PubNub account. Once you sign up, you can get your unique PubNub keys in the PubNub Developer Portal. Once you have, clone the GitHub repository, and enter your unique PubNub keys on the PubNub initialization, for example:

Now we’re all set up to grant people access to channels. All we need to do now is callpubnub.grant().

Let’s break it down.

There is the channel: we want to grant access to. We usechannel + ',' + channel + '-pnpres', because using a comma lets us grant the same access to two channels at once.

The auth_key is the same as earlier. This is who we want to grant access to.

The properties read: true let us subscribe, and write: true let us publish.

The ttl: setting is a time for the grant to expire and it is set to 0 so it lasts forever.

There is also callback but if you don’t know what thats for by now you should go back to tutorial #1!

Grant Before Subscribe

We’re going to wrap our pubnub.subscribe call in a grant call so we have sufficient permissions before we try to connect.

Because we’re using PubNub presence, we also need to grant ourselves access to thechannel + '-pnpres' channel.

We’ll grant ourselves permissions in channel, wait for the callback, grant ourselves permission in chanel + '-pnpres', wait for the callback, and then finally subscribe.

Now when we run the code, we should connect without errors. This will grant everybody access to the channel and presence channel when they load the page.

If you experience errors, check your auth_keychannel_name, and make sure PAM is enabled.

Make Private Channels Private

Now we’re going to do the same exact thing for the private user to user channel. When a user opens the modal, they’ll give themselves access to the private chat channel. No other users will have access to that channel besides the two users who start chatting.

Private Chat API Demo

Check out the full demo below:

See the Pen Memewarz – Private Chat #3 by Ian Jennings (@ianjennings) on CodePen.0

Real Security

private chat api

As of now, users can grant access to themselves (and that’s not secure now, is it?) In our next tutorial we’ll change that, and move the PAM permissions “server side” in a simulated NodeJS environment.

Get Started
Sign up for free and use PubNub to power
real-time private chat!

More from PubNub

How to Add a Notification Badge to Icons in React Native
Real-time Chat BlogDec 19, 20226 min read

How to Add a Notification Badge to Icons in React Native

Display real-time notification badges with PubNub and React Native to display important information and bring users back to your...

Michael Carroll

Michael Carroll

Digital Twins and the Future of Real-Time Data
InsightsDec 6, 20224 min read

Digital Twins and the Future of Real-Time Data

The concept of Digital Twins has evolved over the last two decades, however, one thing remains the same: the need for real-time...

Michael Carroll

Michael Carroll

How Many Text Characters Fit in a 32KB PubNub Message?
Real-time Chat BlogNov 24, 20224 min read

How Many Text Characters Fit in a 32KB PubNub Message?

Learn the ins-and-outs of PubNub message size and get a better idea of how many text characters fit in a single message.

Michael Carroll

Michael Carroll