UNPKG

@colyseus/social

Version:

Authentication and Social features for Colyseus

101 lines (76 loc) 4.1 kB
<div align="center"> <img src="media/announcement.png?raw=true" /> <br> <br> <a href="https://npmjs.com/package/colyseus"> <img src="https://img.shields.io/npm/dm/colyseus.svg?style=for-the-badge&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAHdElNRQfjAgETESWYxR33AAAAtElEQVQoz4WQMQrCQBRE38Z0QoTcwF4Qg1h4BO0sxGOk80iCtViksrIQRRBTewWxMI1mbELYjYu+4rPMDPtn12ChMT3gavb4US5Jym0tcBIta3oDHv4Gwmr7nC4QAxBrCdzM2q6XqUnm9m9r59h7Rc0n2pFv24k4ttGMUXW+sGELTJjSr7QDKuqLS6UKFChVWWuFkZw9Z2AAvAirKT+JTlppIRnd6XgaP4goefI2Shj++OnjB3tBmHYK8z9zAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE5LTAyLTAxVDE4OjE3OjM3KzAxOjAwGQQixQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxOS0wMi0wMVQxODoxNzozNyswMTowMGhZmnkAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAAAElFTkSuQmCC"> </a> <a href="https://patreon.com/endel" title="Donate to this project using Patreon"> <img src="https://img.shields.io/badge/endpoint.svg?url=https%3A%2F%2Fshieldsio-patreon.herokuapp.com%2Fendel&style=for-the-badge" alt="Patreon donate button"/> </a> <a href="http://discuss.colyseus.io" title="Discuss on Forum"> <img src="https://img.shields.io/badge/discuss-on%20forum-brightgreen.svg?style=for-the-badge&colorB=0069b8&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAHdElNRQfjAgETDROxCNUzAAABB0lEQVQoz4WRvyvEARjGP193CnWRH+dHQmGwKZtFGcSmxHAL400GN95ktIpV2dzlLzDJgsGgGNRdDAzoQueS/PgY3HXHyT3T+/Y87/s89UANBKXBdoZo5J6L4K1K5ZxHfnjnlQUf3bKvkgy57a0r9hS3cXfMO1kWJMza++tj3Ac7/LY343x1NA9cNmYMwnSS/SP8JVFuSJmr44iFqvtmpjhmhBCrOOazCesq6H4P3bPBjFoIBydOk2bUA17I080Es+wSZ51B4DIA2zgjSpYcEe44Js01G0XjRcCU+y4ZMrDeLmfc9EnVd5M/o0VMeu6nJZxWJivLmhyw1WHTvrr2b4+2OFqra+ALwouTMDcqmjMAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTktMDItMDFUMTg6MTM6MTkrMDE6MDAC9f6fAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE5LTAyLTAxVDE4OjEzOjE5KzAxOjAwc6hGIwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAAASUVORK5CYII=" alt="Discussion forum" /> </a> <a href="https://discord.gg/RY8rRS7"> <img src="https://img.shields.io/discord/525739117951320081.svg?style=for-the-badge&colorB=7581dc&logo=discord&logoColor=white"> </a> <h3> Authentication and Social features for <a href="https://github.com/colyseus/colyseus">Colyseus</a><br /> <a href="https://docs.colyseus.io/tools/colyseus-social/">View documentation</a> </h3> </div> ## Features - Authenticate with Facebook - Get list of user's friends - Get list of user's online friends - Friend requests (send, accept, decline) - Block user ## Hooks ```typescript import { hooks } from "@colyseus/social"; hooks.beforeAuthenticate((provider, $setOnInsert, $set) => { // assign default metadata upon registration $setOnInsert = { metadata: { coins: 100, trophies: 0 } }; }); hooks.beforeUserUpdate((_id, fields) => { if (fields['username']) { if (fields['username'] === "bad word!") { throw new Error("can't have bad words!"); } } }) ``` ## Authentication Providers - Anonymous - Facebook - _...more coming soonish!_ ## Environment Variables - `MONGO_URI`: MongoDB connection URI - `JWT_SECRET`: Secure secret string for authentication. ### For Facebook: - `FACEBOOK_APP_TOKEN`: Facebook App Token (`"appid|appsecret"`) ### For Push Notifications - `WEBPUSH_SUBJECT` - mailto: or URL. - `WEBPUSH_PUBLIC_KEY` - VAPID Public Key - `WEBPUSH_PRIVATE_KEY` - VAPID Private Key You can generate VAIPD keys using `npx web-push generate-vapid-keys` ## Integration with your Node.js Web Framework ### Express ```typescript import express from "express"; import socialRoutes from "@colyseus/social/express" const app = express(); app.use("/", socialRoutes); app.listen(8080); ``` ## TODO's - Friend request notification (https://github.com/appfeel/node-pushnotifications) - On mobile - In the browser ## License MIT License.