@yimingliao/cms 0.0.27 → 0.0.28

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.
@@ -682,6 +682,45 @@ declare function createAuthUseCases({ prisma, adminQueryRepository, adminRefresh
682
682
  }) => Promise<AdminSafe>;
683
683
  };
684
684
 
685
+ interface CreateVerifyAccessTokenOptions {
686
+ adminQueryRepository: ReturnType<typeof createAdminQueryRepository>;
687
+ jwtService: ReturnType<typeof createJwtService>;
688
+ cryptoService: ReturnType<typeof createCryptoService>;
689
+ cookieService: ReturnType<typeof createCookieService>;
690
+ config: {
691
+ accessTokenName: string;
692
+ accessTokenSecret: string;
693
+ };
694
+ }
695
+ declare function createVerifyAccessToken({ adminQueryRepository, jwtService, cryptoService, cookieService, config, }: CreateVerifyAccessTokenOptions): () => Promise<{
696
+ admin: AdminFull;
697
+ } | null>;
698
+
699
+ interface CreateVerifyRefreshTokenOptions {
700
+ adminQueryRepository: ReturnType<typeof createAdminQueryRepository>;
701
+ adminRefreshTokenQueryRepository: ReturnType<typeof createAdminRefreshTokenQueryRepository>;
702
+ cryptoService: ReturnType<typeof createCryptoService>;
703
+ cookieService: ReturnType<typeof createCookieService>;
704
+ config: {
705
+ refreshTokenName: string;
706
+ };
707
+ }
708
+ declare function createVerifyRefreshToken({ adminQueryRepository, adminRefreshTokenQueryRepository, cryptoService, cookieService, config, }: CreateVerifyRefreshTokenOptions): () => Promise<{
709
+ adminRefreshToken: AdminRefreshToken;
710
+ admin: AdminFull;
711
+ } | null>;
712
+
713
+ interface CreateAuthMiddlewareOptions {
714
+ adminRefreshTokenCommandRepository: ReturnType<typeof createAdminRefreshTokenCommandRepository>;
715
+ authUseCases: ReturnType<typeof createAuthUseCases>;
716
+ verifyAccessToken: ReturnType<typeof createVerifyAccessToken>;
717
+ verifyRefreshToken: ReturnType<typeof createVerifyRefreshToken>;
718
+ headers: () => Promise<Headers>;
719
+ }
720
+ declare function createAuthMiddleware({ adminRefreshTokenCommandRepository, authUseCases, verifyAccessToken, verifyRefreshToken, headers, }: CreateAuthMiddlewareOptions): Promise<{
721
+ authenticate(): Promise<AdminFull>;
722
+ }>;
723
+
685
724
  declare class ServerError extends Error {
686
725
  readonly i18nKey?: string;
687
726
  readonly statusCode?: number;
@@ -700,4 +739,4 @@ declare class ServerError extends Error {
700
739
  static internalServerError(): ServerError;
701
740
  }
702
741
 
703
- export { ADMIN_ORDER_BY, ORDER_BY, POST_ORDER_BY, type RawCacheKey, ServerError, createAdminCommandRepository, createAdminQueryRepository, createAdminRefreshTokenCommandRepository, createAdminRefreshTokenQueryRepository, createArgon2Service, createAuthUseCases, createCache, createCacheResult, createCookieService, createCryptoService, createExecuteAction, createExecuteApi, createFileCommandRepository, createFileQueryRepository, createFolderCommandRepository, createFolderQueryRepository, createIpRateLimiter, createJwtService, createPostCommandRepository, createPostQueryRepository, createSeoMetadataCommandRepository, normalizeCacheKey };
742
+ export { ADMIN_ORDER_BY, ORDER_BY, POST_ORDER_BY, type RawCacheKey, ServerError, createAdminCommandRepository, createAdminQueryRepository, createAdminRefreshTokenCommandRepository, createAdminRefreshTokenQueryRepository, createArgon2Service, createAuthMiddleware, createAuthUseCases, createCache, createCacheResult, createCookieService, createCryptoService, createExecuteAction, createExecuteApi, createFileCommandRepository, createFileQueryRepository, createFolderCommandRepository, createFolderQueryRepository, createIpRateLimiter, createJwtService, createPostCommandRepository, createPostQueryRepository, createSeoMetadataCommandRepository, createVerifyAccessToken, createVerifyRefreshToken, normalizeCacheKey };
@@ -1458,7 +1458,7 @@ var ServerError = class _ServerError extends Error {
1458
1458
  }
1459
1459
  };
1460
1460
 
1461
- // src/server/interfaces/normalize-error.ts
1461
+ // src/server/interfaces/execution/normalize-error.ts
1462
1462
  var normalizeError = (error, translator) => {
1463
1463
  if (error instanceof ZodError) {
1464
1464
  const errors = error.issues.map((issue) => {
@@ -1488,7 +1488,7 @@ var normalizeError = (error, translator) => {
1488
1488
  };
1489
1489
  };
1490
1490
 
1491
- // src/server/interfaces/execute-action/create-execute-action.ts
1491
+ // src/server/interfaces/execution/execute-action/create-execute-action.ts
1492
1492
  function createExecuteAction({
1493
1493
  initI18n,
1494
1494
  cacheResult,
@@ -1546,6 +1546,89 @@ function createExecuteApi({
1546
1546
  };
1547
1547
  }
1548
1548
 
1549
+ // src/server/interfaces/middlewares/auth/create-auth-middleware.ts
1550
+ async function createAuthMiddleware({
1551
+ adminRefreshTokenCommandRepository,
1552
+ authUseCases,
1553
+ verifyAccessToken,
1554
+ verifyRefreshToken,
1555
+ headers: headers2
1556
+ }) {
1557
+ const authMiddleware = {
1558
+ async authenticate() {
1559
+ const verifiedAccessToken = await verifyAccessToken();
1560
+ if (verifiedAccessToken) return verifiedAccessToken.admin;
1561
+ const verifiedRefreshToken = await verifyRefreshToken();
1562
+ if (!verifiedRefreshToken) throw ServerError.unauthorized();
1563
+ const { adminRefreshToken, admin } = verifiedRefreshToken;
1564
+ await adminRefreshTokenCommandRepository.delete({
1565
+ id: adminRefreshToken.id
1566
+ });
1567
+ await authUseCases.refreshTokens({
1568
+ admin,
1569
+ deviceInfo: adminRefreshToken.deviceInfo,
1570
+ ip: (await headers2()).get("x-forwarded-for") || "unknown"
1571
+ });
1572
+ return admin;
1573
+ }
1574
+ };
1575
+ return authMiddleware;
1576
+ }
1577
+
1578
+ // src/server/interfaces/middlewares/auth/create-verify-access-token.ts
1579
+ function createVerifyAccessToken({
1580
+ adminQueryRepository,
1581
+ jwtService,
1582
+ cryptoService,
1583
+ cookieService,
1584
+ config
1585
+ }) {
1586
+ return async function verifyAccessToken() {
1587
+ try {
1588
+ const token = await cookieService.getSignedCookie({
1589
+ name: config.accessTokenName
1590
+ });
1591
+ const payload = jwtService.verify({
1592
+ token,
1593
+ secret: cryptoService.hash(config.accessTokenSecret)
1594
+ });
1595
+ const admin = await adminQueryRepository.findFull({
1596
+ id: payload["id"]
1597
+ });
1598
+ return admin ? { admin } : null;
1599
+ } catch {
1600
+ return null;
1601
+ }
1602
+ };
1603
+ }
1604
+
1605
+ // src/server/interfaces/middlewares/auth/create-verify-refresh-token.ts
1606
+ function createVerifyRefreshToken({
1607
+ adminQueryRepository,
1608
+ adminRefreshTokenQueryRepository,
1609
+ cryptoService,
1610
+ cookieService,
1611
+ config
1612
+ }) {
1613
+ return async function verifyRefreshToken() {
1614
+ try {
1615
+ const token = await cookieService.getSignedCookie({
1616
+ name: config.refreshTokenName
1617
+ });
1618
+ const adminRefreshToken = await adminRefreshTokenQueryRepository.findByToken({
1619
+ tokenHash: cryptoService.hash(token)
1620
+ });
1621
+ if (!adminRefreshToken) return null;
1622
+ const admin = await adminQueryRepository.findFull({
1623
+ id: adminRefreshToken.adminId
1624
+ });
1625
+ return admin ? { adminRefreshToken, admin } : null;
1626
+ } catch {
1627
+ return null;
1628
+ }
1629
+ };
1630
+ }
1631
+
1549
1632
  // src/server/applications/auth/create-auth-use-cases.ts
1550
1633
  function createAuthUseCases({
1551
1634
  prisma,
@@ -1670,4 +1753,4 @@ function createAuthUseCases({
1670
1753
  };
1671
1754
  }
1672
1755
 
1673
- export { ADMIN_ORDER_BY, ORDER_BY, POST_ORDER_BY, ServerError, createAdminCommandRepository, createAdminQueryRepository, createAdminRefreshTokenCommandRepository, createAdminRefreshTokenQueryRepository, createArgon2Service, createAuthUseCases, createCache, createCacheResult, createCookieService, createCryptoService, createExecuteAction, createExecuteApi, createFileCommandRepository, createFileQueryRepository, createFolderCommandRepository, createFolderQueryRepository, createIpRateLimiter, createJwtService, createPostCommandRepository, createPostQueryRepository, createSeoMetadataCommandRepository, normalizeCacheKey };
1756
+ export { ADMIN_ORDER_BY, ORDER_BY, POST_ORDER_BY, ServerError, createAdminCommandRepository, createAdminQueryRepository, createAdminRefreshTokenCommandRepository, createAdminRefreshTokenQueryRepository, createArgon2Service, createAuthMiddleware, createAuthUseCases, createCache, createCacheResult, createCookieService, createCryptoService, createExecuteAction, createExecuteApi, createFileCommandRepository, createFileQueryRepository, createFolderCommandRepository, createFolderQueryRepository, createIpRateLimiter, createJwtService, createPostCommandRepository, createPostQueryRepository, createSeoMetadataCommandRepository, createVerifyAccessToken, createVerifyRefreshToken, normalizeCacheKey };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yimingliao/cms",
3
- "version": "0.0.27",
3
+ "version": "0.0.28",
4
4
  "author": "Yiming Liao",
5
5
  "license": "MIT",
6
6
  "type": "module",