@@ -10,7 +10,7 @@ Socket.io Middleware firebase-admin
10
10
</a >
11
11
</p >
12
12
13
- a minimal BDD interface / reporter for [ ESM Modules ] ( https://nodejs.org/api/esm.html#esm_enabling )
13
+ a socket.io middleware [ firebaseAdmin.verifySessionCookie ] ( https://firebase.google.com/docs/auth/admin/manage-cookies )
14
14
15
15
Installation
16
16
---
@@ -20,7 +20,66 @@ yarn add socket.io-middleware-firebase-admin
20
20
21
21
API
22
22
---
23
- TODO
23
+
24
+ ## createIoMiddlewareFirebaseAdmin({ credential }, (options = {})): middleware
25
+
26
+ [ initialize "Firebase Admin SDK" using ` credential ` ] ( https://firebase.google.com/docs/admin/setup )
27
+
28
+ ``` js
29
+ import { createServer } from " http" ;
30
+ import createIoServer from " socket.io" ;
31
+ import createIoClient from " socket.io-client" ;
32
+
33
+ import createIoMiddlewareFirebaseAdmin from " socket.io-middleware-firebase-admin" ;
34
+ import credential from " ./.credential" ;
35
+
36
+ const server = createServer ();
37
+ const io = createIoServer (server);
38
+ const ioMiddleware = createIoMiddlewareFirebaseAdmin ({ credential });
39
+
40
+ io .use (ioMiddleware);
41
+
42
+ server .listen (() => {
43
+ const { port } = server .address ();
44
+ const client = createIoClient (` http://localhost:${ port} ` , {
45
+ extraHeaders: {
46
+ Cookie: " session=" // +await firebaseAdmin.auth().createSessionCookie(idToken)
47
+ }
48
+ });
49
+ client .on (" connect" , error => {
50
+ const decodedClaims = ioMiddleware .getCache (client .id );
51
+ console .log (decodedClaims);
52
+ });
53
+ });
54
+ ```
55
+
56
+ ### ` options `
57
+
58
+ * ` options.deny ` = true: boolean
59
+ Deny connections of users who couldn't authenticate.
60
+
61
+ * ` options.cache ` = true: boolean
62
+ Cache claim of authenticated user.
63
+
64
+ ## ioMiddleware.getCache(clientId): decodedClaims
65
+
66
+ Returns the claim of the authenticated user.
67
+
68
+ ``` js
69
+ console .log (ioMiddleware .getCache (client .id ));
70
+ // { iss:
71
+ // 'https://session.firebase.google.com/socketio-middleware-demo1',
72
+ // aud: 'socketio-middleware-demo1',
73
+ // auth_time: 1534417139,
74
+ // user_id: 'CUCPCuD50xgKeEfVggJ1fYQYNOj1',
75
+ // sub: 'CUCPCuD50xgKeEfVggJ1fYQYNOj1',
76
+ // iat: 1534417140,
77
+ // exp: 1534417440,
78
+ // email: 'i59naga@icloud.com',
79
+ // email_verified: false,
80
+ // firebase:
81
+ // { identities: { email: [Array] }, sign_in_provider: 'custom' }
82
+ ```
24
83
25
84
License
26
85
---
0 commit comments