@levrbet/shared 0.1.30 → 0.1.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/types/index.d.ts +1 -0
- package/dist/core/types/index.js +1 -0
- package/dist/core/types/index.js.map +1 -1
- package/dist/core/types/privy.types.d.ts +4 -0
- package/dist/core/types/privy.types.js +9 -0
- package/dist/core/types/privy.types.js.map +1 -0
- package/dist/server/auth/middleware/index.d.ts +0 -1
- package/dist/server/auth/middleware/index.js +0 -15
- package/dist/server/auth/middleware/index.js.map +1 -1
- package/dist/server/auth/privy.service.d.ts +3 -3
- package/dist/server/auth/privy.service.js +8 -10
- package/dist/server/auth/privy.service.js.map +1 -1
- package/dist/server/middleware/index.d.ts +1 -0
- package/dist/server/middleware/index.js +1 -0
- package/dist/server/middleware/index.js.map +1 -1
- package/dist/server/middleware/privy.middleware.d.ts +3 -0
- package/dist/server/middleware/privy.middleware.js +47 -0
- package/dist/server/middleware/privy.middleware.js.map +1 -0
- package/package.json +1 -1
- package/dist/server/auth/middleware/privy.middleware.d.ts +0 -17
- package/dist/server/auth/middleware/privy.middleware.js +0 -38
- package/dist/server/auth/middleware/privy.middleware.js.map +0 -1
package/dist/core/types/index.js
CHANGED
|
@@ -17,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./blockchain"), exports);
|
|
18
18
|
__exportStar(require("./indexers.types"), exports);
|
|
19
19
|
__exportStar(require("./misc.types"), exports);
|
|
20
|
+
__exportStar(require("./privy.types"), exports);
|
|
20
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA4B;AAC5B,mDAAgC;AAChC,+CAA4B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA4B;AAC5B,mDAAgC;AAChC,+CAA4B;AAC5B,gDAA6B"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PrivyRole = void 0;
|
|
4
|
+
var PrivyRole;
|
|
5
|
+
(function (PrivyRole) {
|
|
6
|
+
PrivyRole["User"] = "User";
|
|
7
|
+
PrivyRole["Admin"] = "Admin";
|
|
8
|
+
})(PrivyRole || (exports.PrivyRole = PrivyRole = {}));
|
|
9
|
+
//# sourceMappingURL=privy.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privy.types.js","sourceRoot":"","sources":["../../../src/core/types/privy.types.ts"],"names":[],"mappings":";;;AAAA,IAAY,SAGX;AAHD,WAAY,SAAS;IACjB,0BAAa,CAAA;IACb,4BAAe,CAAA;AACnB,CAAC,EAHW,SAAS,yBAAT,SAAS,QAGpB"}
|
|
@@ -1,18 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
4
|
};
|
|
@@ -80,5 +66,4 @@ const authMiddleWare = (redis) => {
|
|
|
80
66
|
};
|
|
81
67
|
};
|
|
82
68
|
exports.authMiddleWare = authMiddleWare;
|
|
83
|
-
__exportStar(require("./privy.middleware"), exports);
|
|
84
69
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/server/auth/middleware/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/server/auth/middleware/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { User as PrivyUser } from "@privy-io/node";
|
|
2
2
|
import { Address } from "viem";
|
|
3
|
+
import { PrivyRole } from "../../core";
|
|
3
4
|
interface AuthRequest {
|
|
4
5
|
privyToken?: string;
|
|
5
6
|
privyIdToken?: string;
|
|
6
7
|
ethAddress?: string;
|
|
8
|
+
role: PrivyRole;
|
|
7
9
|
}
|
|
8
10
|
declare class PrivyService {
|
|
9
|
-
|
|
10
|
-
authenticateAdmin: (req: AuthRequest) => Promise<PrivyUser | undefined>;
|
|
11
|
+
authenticate({ privyToken, privyIdToken, ethAddress, role }: AuthRequest): Promise<PrivyUser | undefined>;
|
|
11
12
|
/**
|
|
12
13
|
* Gets the user's Ethereum wallet address, prioritizing external wallets over Privy wallets.
|
|
13
14
|
* Returns the first external wallet found, or falls back to a Privy wallet if none exist.
|
|
14
15
|
*/
|
|
15
16
|
getUserEthAddress: (user: PrivyUser) => Address | undefined;
|
|
16
|
-
private authenticate;
|
|
17
17
|
/**
|
|
18
18
|
* Verifies that an Ethereum address belongs to a user by checking their linked accounts.
|
|
19
19
|
*/
|
|
@@ -19,12 +19,6 @@ const constants_1 = require("../../core/constants");
|
|
|
19
19
|
const config_1 = require("../config");
|
|
20
20
|
class PrivyService {
|
|
21
21
|
constructor() {
|
|
22
|
-
this.authenticateUser = async (req) => {
|
|
23
|
-
return this.authenticate(this.getPrivyClients().privyClient, req);
|
|
24
|
-
};
|
|
25
|
-
this.authenticateAdmin = async (req) => {
|
|
26
|
-
return this.authenticate(this.getPrivyClients().privyAdminClient, req);
|
|
27
|
-
};
|
|
28
22
|
/**
|
|
29
23
|
* Gets the user's Ethereum wallet address, prioritizing external wallets over Privy wallets.
|
|
30
24
|
* Returns the first external wallet found, or falls back to a Privy wallet if none exist.
|
|
@@ -49,12 +43,13 @@ class PrivyService {
|
|
|
49
43
|
account.address?.toLowerCase() === addressToVerify.toLowerCase());
|
|
50
44
|
};
|
|
51
45
|
}
|
|
52
|
-
async authenticate(
|
|
46
|
+
async authenticate({ privyToken, privyIdToken, ethAddress, role }) {
|
|
53
47
|
if (!privyToken || !privyIdToken)
|
|
54
48
|
return undefined;
|
|
49
|
+
const privyClient = this.getPrivyClients()[role];
|
|
55
50
|
try {
|
|
56
|
-
await
|
|
57
|
-
const user = await
|
|
51
|
+
await privyClient.utils().auth().verifyAuthToken(privyToken);
|
|
52
|
+
const user = await privyClient.users().get({ id_token: privyIdToken });
|
|
58
53
|
if (ethAddress && !this.verifyUserOwnsAddress(user, ethAddress)) {
|
|
59
54
|
config_1.logger.warn(`User ${user.id} attempted to authenticate with an unlinked address ${ethAddress}.`);
|
|
60
55
|
return undefined;
|
|
@@ -82,7 +77,10 @@ class PrivyService {
|
|
|
82
77
|
appSecret: PRIVY_ADMIN_APP_SECRET,
|
|
83
78
|
jwtVerificationKey: constants_1.PRIVY_ADMIN_VERIFICATION_KEY,
|
|
84
79
|
});
|
|
85
|
-
return {
|
|
80
|
+
return {
|
|
81
|
+
[core_1.PrivyRole.User]: privyClient,
|
|
82
|
+
[core_1.PrivyRole.Admin]: privyAdminClient,
|
|
83
|
+
};
|
|
86
84
|
}
|
|
87
85
|
}
|
|
88
86
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"privy.service.js","sourceRoot":"","sources":["../../../src/server/auth/privy.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAA+D;AAC/D,2DAA4C;AAC5C,+BAA0C;AAC1C,8CAAmB;AACnB,
|
|
1
|
+
{"version":3,"file":"privy.service.js","sourceRoot":"","sources":["../../../src/server/auth/privy.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,5 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./privy.middleware"), exports);
|
|
17
18
|
__exportStar(require("./rateLimit.middleware"), exports);
|
|
18
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/middleware/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAsC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/middleware/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAkC;AAClC,yDAAsC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { NextFunction, Request, Response } from "express";
|
|
2
|
+
export declare const privyUserAuthMiddleware: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
3
|
+
export declare const privyAdminAuthMiddleware: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.privyAdminAuthMiddleware = exports.privyUserAuthMiddleware = void 0;
|
|
4
|
+
const viem_1 = require("viem");
|
|
5
|
+
const core_1 = require("../../core");
|
|
6
|
+
const constants_1 = require("../../core/constants");
|
|
7
|
+
const privy_service_1 = require("../auth/privy.service");
|
|
8
|
+
/**
|
|
9
|
+
* Creates authentication middleware for Privy token validation.
|
|
10
|
+
*
|
|
11
|
+
* This middleware validates Privy access tokens and ID tokens, authenticates users,
|
|
12
|
+
* and sets the authenticated user context on the request object. It supports both
|
|
13
|
+
* User and Admin authentication types based on the provided role.
|
|
14
|
+
*
|
|
15
|
+
* The middleware extracts authentication tokens from the following headers:
|
|
16
|
+
* - `privy-access-token`: The Privy access token for user authentication
|
|
17
|
+
* - `privy-id-token`: The Privy ID token for additional validation
|
|
18
|
+
* - `eth-address`: The user's Ethereum address (optional)
|
|
19
|
+
*
|
|
20
|
+
* @param role - The authentication role type from PrivyRole enum ("User" or "Admin")
|
|
21
|
+
* @returns An Express middleware function that performs the following operations:
|
|
22
|
+
* - Extracts Privy tokens and ETH address from request headers
|
|
23
|
+
* - Validates the tokens using the privyService.authenticate method
|
|
24
|
+
* - Sets `req.privyUser` with the authenticated user object on success
|
|
25
|
+
* - Sets `req.ethAddress` with the validated Ethereum address (from header or user profile)
|
|
26
|
+
* - Returns 401 Unauthorized response with error message if authentication fails
|
|
27
|
+
* - Calls next() to proceed to the next middleware on successful authentication
|
|
28
|
+
* @throws {401} Unauthorized - When token validation fails or user cannot be authenticated
|
|
29
|
+
*/
|
|
30
|
+
const privyAuthMiddleware = (role) => {
|
|
31
|
+
return async (req, res, next) => {
|
|
32
|
+
const privyToken = req.headers[constants_1.PRIVY_ACCESS_TOKEN_HEADER]?.toString();
|
|
33
|
+
const privyIdToken = req.headers[constants_1.PRIVY_ID_TOKEN_HEADER]?.toString();
|
|
34
|
+
const ethAddress = req.headers[constants_1.ETH_ADDRESS_HEADER]?.toString();
|
|
35
|
+
const privyUser = await privy_service_1.privyService.authenticate({ privyToken, privyIdToken, ethAddress, role });
|
|
36
|
+
if (!privyUser) {
|
|
37
|
+
res.status(401).json({ message: "Unauthorized" });
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
req.privyUser = privyUser;
|
|
41
|
+
req.ethAddress = ethAddress && (0, viem_1.isAddress)(ethAddress) ? (0, viem_1.getAddress)(ethAddress) : privy_service_1.privyService.getUserEthAddress(privyUser);
|
|
42
|
+
next();
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
exports.privyUserAuthMiddleware = privyAuthMiddleware(core_1.PrivyRole.User);
|
|
46
|
+
exports.privyAdminAuthMiddleware = privyAuthMiddleware(core_1.PrivyRole.Admin);
|
|
47
|
+
//# sourceMappingURL=privy.middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privy.middleware.js","sourceRoot":"","sources":["../../../src/server/middleware/privy.middleware.ts"],"names":[],"mappings":";;;AACA,+BAA4C;AAC5C,qCAAsC;AACtC,oDAA2G;AAC3G,yDAAoD;AAEpD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,mBAAmB,GAAG,CAAC,IAAe,EAAE,EAAE;IAC5C,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAiB,EAAE;QAC5E,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,qCAAyB,CAAC,EAAE,QAAQ,EAAE,CAAA;QACrE,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,iCAAqB,CAAC,EAAE,QAAQ,EAAE,CAAA;QACnE,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,8BAAkB,CAAC,EAAE,QAAQ,EAAE,CAAA;QAE9D,MAAM,SAAS,GAAG,MAAM,4BAAY,CAAC,YAAY,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;QAEjG,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAA;YACjD,OAAM;QACV,CAAC;QAED,GAAG,CAAC,SAAS,GAAG,SAAS,CAAA;QACzB,GAAG,CAAC,UAAU,GAAG,UAAU,IAAI,IAAA,gBAAS,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAA,iBAAU,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC,4BAAY,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA;QAEzH,IAAI,EAAE,CAAA;IACV,CAAC,CAAA;AACL,CAAC,CAAA;AAEY,QAAA,uBAAuB,GAAG,mBAAmB,CAAC,gBAAS,CAAC,IAAI,CAAC,CAAA;AAC7D,QAAA,wBAAwB,GAAG,mBAAmB,CAAC,gBAAS,CAAC,KAAK,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { NextFunction, Request, Response } from "express";
|
|
2
|
-
/**
|
|
3
|
-
* Creates authentication middleware for Privy token validation.
|
|
4
|
-
*
|
|
5
|
-
* This middleware validates Privy access tokens and ID tokens, authenticates users,
|
|
6
|
-
* and sets the authenticated user context on the request object. It supports both
|
|
7
|
-
* User and Admin authentication types.
|
|
8
|
-
*
|
|
9
|
-
* @param type - The authentication type, either "User" or "Admin"
|
|
10
|
-
* @returns An Express middleware function that:
|
|
11
|
-
* - Extracts Privy tokens and ETH address from request headers
|
|
12
|
-
* - Validates the tokens using the appropriate Privy service method
|
|
13
|
-
* - Sets `req.privyUser` and `req.ethAddress` properties on successful authentication
|
|
14
|
-
* - Returns 401 Unauthorized response if authentication fails
|
|
15
|
-
*
|
|
16
|
-
*/
|
|
17
|
-
export declare const privyAuthMiddleware: (type: "User" | "Admin") => (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.privyAuthMiddleware = void 0;
|
|
4
|
-
const viem_1 = require("viem");
|
|
5
|
-
const constants_1 = require("../../../core/constants");
|
|
6
|
-
const privy_service_1 = require("../privy.service");
|
|
7
|
-
/**
|
|
8
|
-
* Creates authentication middleware for Privy token validation.
|
|
9
|
-
*
|
|
10
|
-
* This middleware validates Privy access tokens and ID tokens, authenticates users,
|
|
11
|
-
* and sets the authenticated user context on the request object. It supports both
|
|
12
|
-
* User and Admin authentication types.
|
|
13
|
-
*
|
|
14
|
-
* @param type - The authentication type, either "User" or "Admin"
|
|
15
|
-
* @returns An Express middleware function that:
|
|
16
|
-
* - Extracts Privy tokens and ETH address from request headers
|
|
17
|
-
* - Validates the tokens using the appropriate Privy service method
|
|
18
|
-
* - Sets `req.privyUser` and `req.ethAddress` properties on successful authentication
|
|
19
|
-
* - Returns 401 Unauthorized response if authentication fails
|
|
20
|
-
*
|
|
21
|
-
*/
|
|
22
|
-
const privyAuthMiddleware = (type) => {
|
|
23
|
-
return async (req, res, next) => {
|
|
24
|
-
const privyToken = req.headers[constants_1.PRIVY_ACCESS_TOKEN_HEADER]?.toString();
|
|
25
|
-
const privyIdToken = req.headers[constants_1.PRIVY_ID_TOKEN_HEADER]?.toString();
|
|
26
|
-
const ethAddress = req.headers[constants_1.ETH_ADDRESS_HEADER]?.toString();
|
|
27
|
-
const privyUser = await privy_service_1.privyService[`authenticate${type}`]({ privyToken, privyIdToken, ethAddress });
|
|
28
|
-
if (!privyUser) {
|
|
29
|
-
res.status(401).json({ message: "Unauthorized" });
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
req.privyUser = privyUser;
|
|
33
|
-
req.ethAddress = ethAddress && (0, viem_1.isAddress)(ethAddress) ? (0, viem_1.getAddress)(ethAddress) : privy_service_1.privyService.getUserEthAddress(privyUser);
|
|
34
|
-
next();
|
|
35
|
-
};
|
|
36
|
-
};
|
|
37
|
-
exports.privyAuthMiddleware = privyAuthMiddleware;
|
|
38
|
-
//# sourceMappingURL=privy.middleware.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"privy.middleware.js","sourceRoot":"","sources":["../../../../src/server/auth/middleware/privy.middleware.ts"],"names":[],"mappings":";;;AACA,+BAA4C;AAC5C,uDAA8G;AAC9G,oDAA+C;AAE/C;;;;;;;;;;;;;;GAcG;AACI,MAAM,mBAAmB,GAAG,CAAC,IAAsB,EAAE,EAAE;IAC1D,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAiB,EAAE;QAC5E,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,qCAAyB,CAAC,EAAE,QAAQ,EAAE,CAAA;QACrE,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,iCAAqB,CAAC,EAAE,QAAQ,EAAE,CAAA;QACnE,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,8BAAkB,CAAC,EAAE,QAAQ,EAAE,CAAA;QAE9D,MAAM,SAAS,GAAG,MAAM,4BAAY,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAA;QAErG,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAA;YACjD,OAAM;QACV,CAAC;QAED,GAAG,CAAC,SAAS,GAAG,SAAS,CAAA;QACzB,GAAG,CAAC,UAAU,GAAG,UAAU,IAAI,IAAA,gBAAS,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAA,iBAAU,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC,4BAAY,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA;QAEzH,IAAI,EAAE,CAAA;IACV,CAAC,CAAA;AACL,CAAC,CAAA;AAlBY,QAAA,mBAAmB,uBAkB/B"}
|