najm-auth 2.0.11 → 2.0.12

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.
@@ -822,6 +822,171 @@ declare const tokensTable: drizzle_orm_pg_core.PgTableWithColumns<{
822
822
  };
823
823
  dialect: "pg";
824
824
  }>;
825
+ /**
826
+ * Short-lived, purpose-bound browser sessions for sensitive credential setup.
827
+ * Only a SHA-256 token hash is persisted; the opaque token lives in an
828
+ * HttpOnly browser-session cookie and can be consumed exactly once.
829
+ */
830
+ declare const credentialSetupSessionsTable: drizzle_orm_pg_core.PgTableWithColumns<{
831
+ name: "credential_setup_sessions";
832
+ schema: undefined;
833
+ columns: {
834
+ userId: drizzle_orm_pg_core.PgColumn<{
835
+ name: "user_id";
836
+ tableName: "credential_setup_sessions";
837
+ dataType: "string";
838
+ columnType: "PgText";
839
+ data: string;
840
+ driverParam: string;
841
+ notNull: true;
842
+ hasDefault: false;
843
+ isPrimaryKey: false;
844
+ isAutoincrement: false;
845
+ hasRuntimeDefault: false;
846
+ enumValues: [string, ...string[]];
847
+ baseColumn: never;
848
+ identity: undefined;
849
+ generated: undefined;
850
+ }, {}, {}>;
851
+ purpose: drizzle_orm_pg_core.PgColumn<{
852
+ name: "purpose";
853
+ tableName: "credential_setup_sessions";
854
+ dataType: "string";
855
+ columnType: "PgText";
856
+ data: string;
857
+ driverParam: string;
858
+ notNull: true;
859
+ hasDefault: false;
860
+ isPrimaryKey: false;
861
+ isAutoincrement: false;
862
+ hasRuntimeDefault: false;
863
+ enumValues: [string, ...string[]];
864
+ baseColumn: never;
865
+ identity: undefined;
866
+ generated: undefined;
867
+ }, {}, {}>;
868
+ tokenHash: drizzle_orm_pg_core.PgColumn<{
869
+ name: "token_hash";
870
+ tableName: "credential_setup_sessions";
871
+ dataType: "string";
872
+ columnType: "PgText";
873
+ data: string;
874
+ driverParam: string;
875
+ notNull: true;
876
+ hasDefault: false;
877
+ isPrimaryKey: false;
878
+ isAutoincrement: false;
879
+ hasRuntimeDefault: false;
880
+ enumValues: [string, ...string[]];
881
+ baseColumn: never;
882
+ identity: undefined;
883
+ generated: undefined;
884
+ }, {}, {}>;
885
+ expiresAt: drizzle_orm_pg_core.PgColumn<{
886
+ name: "expires_at";
887
+ tableName: "credential_setup_sessions";
888
+ dataType: "string";
889
+ columnType: "PgTimestampString";
890
+ data: string;
891
+ driverParam: string;
892
+ notNull: true;
893
+ hasDefault: false;
894
+ isPrimaryKey: false;
895
+ isAutoincrement: false;
896
+ hasRuntimeDefault: false;
897
+ enumValues: undefined;
898
+ baseColumn: never;
899
+ identity: undefined;
900
+ generated: undefined;
901
+ }, {}, {}>;
902
+ consumedAt: drizzle_orm_pg_core.PgColumn<{
903
+ name: "consumed_at";
904
+ tableName: "credential_setup_sessions";
905
+ dataType: "string";
906
+ columnType: "PgTimestampString";
907
+ data: string;
908
+ driverParam: string;
909
+ notNull: false;
910
+ hasDefault: false;
911
+ isPrimaryKey: false;
912
+ isAutoincrement: false;
913
+ hasRuntimeDefault: false;
914
+ enumValues: undefined;
915
+ baseColumn: never;
916
+ identity: undefined;
917
+ generated: undefined;
918
+ }, {}, {}>;
919
+ revokedAt: drizzle_orm_pg_core.PgColumn<{
920
+ name: "revoked_at";
921
+ tableName: "credential_setup_sessions";
922
+ dataType: "string";
923
+ columnType: "PgTimestampString";
924
+ data: string;
925
+ driverParam: string;
926
+ notNull: false;
927
+ hasDefault: false;
928
+ isPrimaryKey: false;
929
+ isAutoincrement: false;
930
+ hasRuntimeDefault: false;
931
+ enumValues: undefined;
932
+ baseColumn: never;
933
+ identity: undefined;
934
+ generated: undefined;
935
+ }, {}, {}>;
936
+ id: drizzle_orm_pg_core.PgColumn<{
937
+ name: "id";
938
+ tableName: "credential_setup_sessions";
939
+ dataType: "string";
940
+ columnType: "PgText";
941
+ data: string;
942
+ driverParam: string;
943
+ notNull: true;
944
+ hasDefault: true;
945
+ isPrimaryKey: true;
946
+ isAutoincrement: false;
947
+ hasRuntimeDefault: true;
948
+ enumValues: [string, ...string[]];
949
+ baseColumn: never;
950
+ identity: undefined;
951
+ generated: undefined;
952
+ }, {}, {}>;
953
+ createdAt: drizzle_orm_pg_core.PgColumn<{
954
+ name: "created_at";
955
+ tableName: "credential_setup_sessions";
956
+ dataType: "string";
957
+ columnType: "PgTimestampString";
958
+ data: string;
959
+ driverParam: string;
960
+ notNull: false;
961
+ hasDefault: true;
962
+ isPrimaryKey: false;
963
+ isAutoincrement: false;
964
+ hasRuntimeDefault: false;
965
+ enumValues: undefined;
966
+ baseColumn: never;
967
+ identity: undefined;
968
+ generated: undefined;
969
+ }, {}, {}>;
970
+ updatedAt: drizzle_orm_pg_core.PgColumn<{
971
+ name: "updated_at";
972
+ tableName: "credential_setup_sessions";
973
+ dataType: "string";
974
+ columnType: "PgTimestampString";
975
+ data: string;
976
+ driverParam: string;
977
+ notNull: false;
978
+ hasDefault: true;
979
+ isPrimaryKey: false;
980
+ isAutoincrement: false;
981
+ hasRuntimeDefault: false;
982
+ enumValues: undefined;
983
+ baseColumn: never;
984
+ identity: undefined;
985
+ generated: undefined;
986
+ }, {}, {}>;
987
+ };
988
+ dialect: "pg";
989
+ }>;
825
990
  /**
826
991
  * Junction table for many-to-many relationship between roles and permissions
827
992
  */
@@ -1466,6 +1631,166 @@ declare const authSchema: {
1466
1631
  };
1467
1632
  dialect: "pg";
1468
1633
  }>;
1634
+ readonly credentialSetupSessions: drizzle_orm_pg_core.PgTableWithColumns<{
1635
+ name: "credential_setup_sessions";
1636
+ schema: undefined;
1637
+ columns: {
1638
+ userId: drizzle_orm_pg_core.PgColumn<{
1639
+ name: "user_id";
1640
+ tableName: "credential_setup_sessions";
1641
+ dataType: "string";
1642
+ columnType: "PgText";
1643
+ data: string;
1644
+ driverParam: string;
1645
+ notNull: true;
1646
+ hasDefault: false;
1647
+ isPrimaryKey: false;
1648
+ isAutoincrement: false;
1649
+ hasRuntimeDefault: false;
1650
+ enumValues: [string, ...string[]];
1651
+ baseColumn: never;
1652
+ identity: undefined;
1653
+ generated: undefined;
1654
+ }, {}, {}>;
1655
+ purpose: drizzle_orm_pg_core.PgColumn<{
1656
+ name: "purpose";
1657
+ tableName: "credential_setup_sessions";
1658
+ dataType: "string";
1659
+ columnType: "PgText";
1660
+ data: string;
1661
+ driverParam: string;
1662
+ notNull: true;
1663
+ hasDefault: false;
1664
+ isPrimaryKey: false;
1665
+ isAutoincrement: false;
1666
+ hasRuntimeDefault: false;
1667
+ enumValues: [string, ...string[]];
1668
+ baseColumn: never;
1669
+ identity: undefined;
1670
+ generated: undefined;
1671
+ }, {}, {}>;
1672
+ tokenHash: drizzle_orm_pg_core.PgColumn<{
1673
+ name: "token_hash";
1674
+ tableName: "credential_setup_sessions";
1675
+ dataType: "string";
1676
+ columnType: "PgText";
1677
+ data: string;
1678
+ driverParam: string;
1679
+ notNull: true;
1680
+ hasDefault: false;
1681
+ isPrimaryKey: false;
1682
+ isAutoincrement: false;
1683
+ hasRuntimeDefault: false;
1684
+ enumValues: [string, ...string[]];
1685
+ baseColumn: never;
1686
+ identity: undefined;
1687
+ generated: undefined;
1688
+ }, {}, {}>;
1689
+ expiresAt: drizzle_orm_pg_core.PgColumn<{
1690
+ name: "expires_at";
1691
+ tableName: "credential_setup_sessions";
1692
+ dataType: "string";
1693
+ columnType: "PgTimestampString";
1694
+ data: string;
1695
+ driverParam: string;
1696
+ notNull: true;
1697
+ hasDefault: false;
1698
+ isPrimaryKey: false;
1699
+ isAutoincrement: false;
1700
+ hasRuntimeDefault: false;
1701
+ enumValues: undefined;
1702
+ baseColumn: never;
1703
+ identity: undefined;
1704
+ generated: undefined;
1705
+ }, {}, {}>;
1706
+ consumedAt: drizzle_orm_pg_core.PgColumn<{
1707
+ name: "consumed_at";
1708
+ tableName: "credential_setup_sessions";
1709
+ dataType: "string";
1710
+ columnType: "PgTimestampString";
1711
+ data: string;
1712
+ driverParam: string;
1713
+ notNull: false;
1714
+ hasDefault: false;
1715
+ isPrimaryKey: false;
1716
+ isAutoincrement: false;
1717
+ hasRuntimeDefault: false;
1718
+ enumValues: undefined;
1719
+ baseColumn: never;
1720
+ identity: undefined;
1721
+ generated: undefined;
1722
+ }, {}, {}>;
1723
+ revokedAt: drizzle_orm_pg_core.PgColumn<{
1724
+ name: "revoked_at";
1725
+ tableName: "credential_setup_sessions";
1726
+ dataType: "string";
1727
+ columnType: "PgTimestampString";
1728
+ data: string;
1729
+ driverParam: string;
1730
+ notNull: false;
1731
+ hasDefault: false;
1732
+ isPrimaryKey: false;
1733
+ isAutoincrement: false;
1734
+ hasRuntimeDefault: false;
1735
+ enumValues: undefined;
1736
+ baseColumn: never;
1737
+ identity: undefined;
1738
+ generated: undefined;
1739
+ }, {}, {}>;
1740
+ id: drizzle_orm_pg_core.PgColumn<{
1741
+ name: "id";
1742
+ tableName: "credential_setup_sessions";
1743
+ dataType: "string";
1744
+ columnType: "PgText";
1745
+ data: string;
1746
+ driverParam: string;
1747
+ notNull: true;
1748
+ hasDefault: true;
1749
+ isPrimaryKey: true;
1750
+ isAutoincrement: false;
1751
+ hasRuntimeDefault: true;
1752
+ enumValues: [string, ...string[]];
1753
+ baseColumn: never;
1754
+ identity: undefined;
1755
+ generated: undefined;
1756
+ }, {}, {}>;
1757
+ createdAt: drizzle_orm_pg_core.PgColumn<{
1758
+ name: "created_at";
1759
+ tableName: "credential_setup_sessions";
1760
+ dataType: "string";
1761
+ columnType: "PgTimestampString";
1762
+ data: string;
1763
+ driverParam: string;
1764
+ notNull: false;
1765
+ hasDefault: true;
1766
+ isPrimaryKey: false;
1767
+ isAutoincrement: false;
1768
+ hasRuntimeDefault: false;
1769
+ enumValues: undefined;
1770
+ baseColumn: never;
1771
+ identity: undefined;
1772
+ generated: undefined;
1773
+ }, {}, {}>;
1774
+ updatedAt: drizzle_orm_pg_core.PgColumn<{
1775
+ name: "updated_at";
1776
+ tableName: "credential_setup_sessions";
1777
+ dataType: "string";
1778
+ columnType: "PgTimestampString";
1779
+ data: string;
1780
+ driverParam: string;
1781
+ notNull: false;
1782
+ hasDefault: true;
1783
+ isPrimaryKey: false;
1784
+ isAutoincrement: false;
1785
+ hasRuntimeDefault: false;
1786
+ enumValues: undefined;
1787
+ baseColumn: never;
1788
+ identity: undefined;
1789
+ generated: undefined;
1790
+ }, {}, {}>;
1791
+ };
1792
+ dialect: "pg";
1793
+ }>;
1469
1794
  readonly roles: drizzle_orm_pg_core.PgTableWithColumns<{
1470
1795
  name: "roles";
1471
1796
  schema: undefined;
@@ -1753,7 +2078,9 @@ type Permission = typeof permissionsTable.$inferSelect;
1753
2078
  type NewPermission = typeof permissionsTable.$inferInsert;
1754
2079
  type Token = typeof tokensTable.$inferSelect;
1755
2080
  type NewToken = typeof tokensTable.$inferInsert;
2081
+ type CredentialSetupSession = typeof credentialSetupSessionsTable.$inferSelect;
2082
+ type NewCredentialSetupSession = typeof credentialSetupSessionsTable.$inferInsert;
1756
2083
  type RolePermission = typeof rolePermissionsTable.$inferSelect;
1757
2084
  type NewRolePermission = typeof rolePermissionsTable.$inferInsert;
1758
2085
 
1759
- export { type NewOAuthAccount, type NewPermission, type NewRoleEntity, type NewRolePermission, type NewToken, type NewUser, type OAuthAccount, type Permission, type RoleEntity, type RolePermission, type Token, type User, authSchema, baseFields, oauthAccountsTable, permissionsTable, rolePermissionsTable, rolesTable, tokenStatusEnum, tokenTypeEnum, tokensTable, userStatusEnum, usersTable };
2086
+ export { type CredentialSetupSession, type NewCredentialSetupSession, type NewOAuthAccount, type NewPermission, type NewRoleEntity, type NewRolePermission, type NewToken, type NewUser, type OAuthAccount, type Permission, type RoleEntity, type RolePermission, type Token, type User, authSchema, baseFields, credentialSetupSessionsTable, oauthAccountsTable, permissionsTable, rolePermissionsTable, rolesTable, tokenStatusEnum, tokenTypeEnum, tokensTable, userStatusEnum, usersTable };
package/dist/schema/pg.js CHANGED
@@ -74,6 +74,18 @@ var tokensTable = pgTable("tokens", {
74
74
  userIdIdx: index("tokens_user_id_idx").on(table.userId),
75
75
  expiresAtIdx: index("tokens_expires_at_idx").on(table.expiresAt)
76
76
  }));
77
+ var credentialSetupSessionsTable = pgTable("credential_setup_sessions", {
78
+ ...baseFields(16),
79
+ userId: text("user_id").references(() => usersTable.id, { onDelete: "cascade" }).notNull(),
80
+ purpose: text("purpose").notNull(),
81
+ tokenHash: text("token_hash").notNull().unique(),
82
+ expiresAt: timestamp("expires_at", { mode: "string" }).notNull(),
83
+ consumedAt: timestamp("consumed_at", { mode: "string" }),
84
+ revokedAt: timestamp("revoked_at", { mode: "string" })
85
+ }, (table) => ({
86
+ userPurposeIdx: index("credential_setup_sessions_user_purpose_idx").on(table.userId, table.purpose),
87
+ expiresAtIdx: index("credential_setup_sessions_expires_at_idx").on(table.expiresAt)
88
+ }));
77
89
  var rolePermissionsTable = pgTable("role_permissions", {
78
90
  roleId: text("role_id").notNull().references(() => rolesTable.id, { onDelete: "cascade" }),
79
91
  permissionId: text("permission_id").notNull().references(() => permissionsTable.id, { onDelete: "cascade" }),
@@ -85,6 +97,7 @@ var authSchema = {
85
97
  users: usersTable,
86
98
  oauthAccounts: oauthAccountsTable,
87
99
  tokens: tokensTable,
100
+ credentialSetupSessions: credentialSetupSessionsTable,
88
101
  roles: rolesTable,
89
102
  permissions: permissionsTable,
90
103
  rolePermissions: rolePermissionsTable
@@ -92,6 +105,7 @@ var authSchema = {
92
105
  export {
93
106
  authSchema,
94
107
  baseFields,
108
+ credentialSetupSessionsTable,
95
109
  oauthAccountsTable,
96
110
  permissionsTable,
97
111
  rolePermissionsTable,