najm-auth 2.0.11 → 2.0.13

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.
@@ -906,6 +906,189 @@ declare const tokensTable: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
906
906
  };
907
907
  dialect: "sqlite";
908
908
  }>;
909
+ /**
910
+ * Short-lived, purpose-bound browser sessions for sensitive credential setup.
911
+ * Only a SHA-256 token hash is persisted; the opaque token lives in an
912
+ * HttpOnly browser-session cookie and can be consumed exactly once.
913
+ */
914
+ declare const credentialSetupSessionsTable: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
915
+ name: "credential_setup_sessions";
916
+ schema: undefined;
917
+ columns: {
918
+ userId: drizzle_orm_sqlite_core.SQLiteColumn<{
919
+ name: "user_id";
920
+ tableName: "credential_setup_sessions";
921
+ dataType: "string";
922
+ columnType: "SQLiteText";
923
+ data: string;
924
+ driverParam: string;
925
+ notNull: true;
926
+ hasDefault: false;
927
+ isPrimaryKey: false;
928
+ isAutoincrement: false;
929
+ hasRuntimeDefault: false;
930
+ enumValues: [string, ...string[]];
931
+ baseColumn: never;
932
+ identity: undefined;
933
+ generated: undefined;
934
+ }, {}, {
935
+ length: number;
936
+ }>;
937
+ purpose: drizzle_orm_sqlite_core.SQLiteColumn<{
938
+ name: "purpose";
939
+ tableName: "credential_setup_sessions";
940
+ dataType: "string";
941
+ columnType: "SQLiteText";
942
+ data: string;
943
+ driverParam: string;
944
+ notNull: true;
945
+ hasDefault: false;
946
+ isPrimaryKey: false;
947
+ isAutoincrement: false;
948
+ hasRuntimeDefault: false;
949
+ enumValues: [string, ...string[]];
950
+ baseColumn: never;
951
+ identity: undefined;
952
+ generated: undefined;
953
+ }, {}, {
954
+ length: number;
955
+ }>;
956
+ tokenHash: drizzle_orm_sqlite_core.SQLiteColumn<{
957
+ name: "token_hash";
958
+ tableName: "credential_setup_sessions";
959
+ dataType: "string";
960
+ columnType: "SQLiteText";
961
+ data: string;
962
+ driverParam: string;
963
+ notNull: true;
964
+ hasDefault: false;
965
+ isPrimaryKey: false;
966
+ isAutoincrement: false;
967
+ hasRuntimeDefault: false;
968
+ enumValues: [string, ...string[]];
969
+ baseColumn: never;
970
+ identity: undefined;
971
+ generated: undefined;
972
+ }, {}, {
973
+ length: number;
974
+ }>;
975
+ expiresAt: drizzle_orm_sqlite_core.SQLiteColumn<{
976
+ name: "expires_at";
977
+ tableName: "credential_setup_sessions";
978
+ dataType: "string";
979
+ columnType: "SQLiteText";
980
+ data: string;
981
+ driverParam: string;
982
+ notNull: true;
983
+ hasDefault: false;
984
+ isPrimaryKey: false;
985
+ isAutoincrement: false;
986
+ hasRuntimeDefault: false;
987
+ enumValues: [string, ...string[]];
988
+ baseColumn: never;
989
+ identity: undefined;
990
+ generated: undefined;
991
+ }, {}, {
992
+ length: number;
993
+ }>;
994
+ consumedAt: drizzle_orm_sqlite_core.SQLiteColumn<{
995
+ name: "consumed_at";
996
+ tableName: "credential_setup_sessions";
997
+ dataType: "string";
998
+ columnType: "SQLiteText";
999
+ data: string;
1000
+ driverParam: string;
1001
+ notNull: false;
1002
+ hasDefault: false;
1003
+ isPrimaryKey: false;
1004
+ isAutoincrement: false;
1005
+ hasRuntimeDefault: false;
1006
+ enumValues: [string, ...string[]];
1007
+ baseColumn: never;
1008
+ identity: undefined;
1009
+ generated: undefined;
1010
+ }, {}, {
1011
+ length: number;
1012
+ }>;
1013
+ revokedAt: drizzle_orm_sqlite_core.SQLiteColumn<{
1014
+ name: "revoked_at";
1015
+ tableName: "credential_setup_sessions";
1016
+ dataType: "string";
1017
+ columnType: "SQLiteText";
1018
+ data: string;
1019
+ driverParam: string;
1020
+ notNull: false;
1021
+ hasDefault: false;
1022
+ isPrimaryKey: false;
1023
+ isAutoincrement: false;
1024
+ hasRuntimeDefault: false;
1025
+ enumValues: [string, ...string[]];
1026
+ baseColumn: never;
1027
+ identity: undefined;
1028
+ generated: undefined;
1029
+ }, {}, {
1030
+ length: number;
1031
+ }>;
1032
+ id: drizzle_orm_sqlite_core.SQLiteColumn<{
1033
+ name: "id";
1034
+ tableName: "credential_setup_sessions";
1035
+ dataType: "string";
1036
+ columnType: "SQLiteText";
1037
+ data: string;
1038
+ driverParam: string;
1039
+ notNull: true;
1040
+ hasDefault: true;
1041
+ isPrimaryKey: true;
1042
+ isAutoincrement: false;
1043
+ hasRuntimeDefault: true;
1044
+ enumValues: [string, ...string[]];
1045
+ baseColumn: never;
1046
+ identity: undefined;
1047
+ generated: undefined;
1048
+ }, {}, {
1049
+ length: number;
1050
+ }>;
1051
+ createdAt: drizzle_orm_sqlite_core.SQLiteColumn<{
1052
+ name: "created_at";
1053
+ tableName: "credential_setup_sessions";
1054
+ dataType: "string";
1055
+ columnType: "SQLiteText";
1056
+ data: string;
1057
+ driverParam: string;
1058
+ notNull: false;
1059
+ hasDefault: true;
1060
+ isPrimaryKey: false;
1061
+ isAutoincrement: false;
1062
+ hasRuntimeDefault: true;
1063
+ enumValues: [string, ...string[]];
1064
+ baseColumn: never;
1065
+ identity: undefined;
1066
+ generated: undefined;
1067
+ }, {}, {
1068
+ length: number;
1069
+ }>;
1070
+ updatedAt: drizzle_orm_sqlite_core.SQLiteColumn<{
1071
+ name: "updated_at";
1072
+ tableName: "credential_setup_sessions";
1073
+ dataType: "string";
1074
+ columnType: "SQLiteText";
1075
+ data: string;
1076
+ driverParam: string;
1077
+ notNull: false;
1078
+ hasDefault: true;
1079
+ isPrimaryKey: false;
1080
+ isAutoincrement: false;
1081
+ hasRuntimeDefault: true;
1082
+ enumValues: [string, ...string[]];
1083
+ baseColumn: never;
1084
+ identity: undefined;
1085
+ generated: undefined;
1086
+ }, {}, {
1087
+ length: number;
1088
+ }>;
1089
+ };
1090
+ dialect: "sqlite";
1091
+ }>;
909
1092
  /**
910
1093
  * Junction table for many-to-many relationship between roles and permissions
911
1094
  */
@@ -1657,6 +1840,184 @@ declare const authSchema: {
1657
1840
  };
1658
1841
  dialect: "sqlite";
1659
1842
  }>;
1843
+ readonly credentialSetupSessions: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
1844
+ name: "credential_setup_sessions";
1845
+ schema: undefined;
1846
+ columns: {
1847
+ userId: drizzle_orm_sqlite_core.SQLiteColumn<{
1848
+ name: "user_id";
1849
+ tableName: "credential_setup_sessions";
1850
+ dataType: "string";
1851
+ columnType: "SQLiteText";
1852
+ data: string;
1853
+ driverParam: string;
1854
+ notNull: true;
1855
+ hasDefault: false;
1856
+ isPrimaryKey: false;
1857
+ isAutoincrement: false;
1858
+ hasRuntimeDefault: false;
1859
+ enumValues: [string, ...string[]];
1860
+ baseColumn: never;
1861
+ identity: undefined;
1862
+ generated: undefined;
1863
+ }, {}, {
1864
+ length: number;
1865
+ }>;
1866
+ purpose: drizzle_orm_sqlite_core.SQLiteColumn<{
1867
+ name: "purpose";
1868
+ tableName: "credential_setup_sessions";
1869
+ dataType: "string";
1870
+ columnType: "SQLiteText";
1871
+ data: string;
1872
+ driverParam: string;
1873
+ notNull: true;
1874
+ hasDefault: false;
1875
+ isPrimaryKey: false;
1876
+ isAutoincrement: false;
1877
+ hasRuntimeDefault: false;
1878
+ enumValues: [string, ...string[]];
1879
+ baseColumn: never;
1880
+ identity: undefined;
1881
+ generated: undefined;
1882
+ }, {}, {
1883
+ length: number;
1884
+ }>;
1885
+ tokenHash: drizzle_orm_sqlite_core.SQLiteColumn<{
1886
+ name: "token_hash";
1887
+ tableName: "credential_setup_sessions";
1888
+ dataType: "string";
1889
+ columnType: "SQLiteText";
1890
+ data: string;
1891
+ driverParam: string;
1892
+ notNull: true;
1893
+ hasDefault: false;
1894
+ isPrimaryKey: false;
1895
+ isAutoincrement: false;
1896
+ hasRuntimeDefault: false;
1897
+ enumValues: [string, ...string[]];
1898
+ baseColumn: never;
1899
+ identity: undefined;
1900
+ generated: undefined;
1901
+ }, {}, {
1902
+ length: number;
1903
+ }>;
1904
+ expiresAt: drizzle_orm_sqlite_core.SQLiteColumn<{
1905
+ name: "expires_at";
1906
+ tableName: "credential_setup_sessions";
1907
+ dataType: "string";
1908
+ columnType: "SQLiteText";
1909
+ data: string;
1910
+ driverParam: string;
1911
+ notNull: true;
1912
+ hasDefault: false;
1913
+ isPrimaryKey: false;
1914
+ isAutoincrement: false;
1915
+ hasRuntimeDefault: false;
1916
+ enumValues: [string, ...string[]];
1917
+ baseColumn: never;
1918
+ identity: undefined;
1919
+ generated: undefined;
1920
+ }, {}, {
1921
+ length: number;
1922
+ }>;
1923
+ consumedAt: drizzle_orm_sqlite_core.SQLiteColumn<{
1924
+ name: "consumed_at";
1925
+ tableName: "credential_setup_sessions";
1926
+ dataType: "string";
1927
+ columnType: "SQLiteText";
1928
+ data: string;
1929
+ driverParam: string;
1930
+ notNull: false;
1931
+ hasDefault: false;
1932
+ isPrimaryKey: false;
1933
+ isAutoincrement: false;
1934
+ hasRuntimeDefault: false;
1935
+ enumValues: [string, ...string[]];
1936
+ baseColumn: never;
1937
+ identity: undefined;
1938
+ generated: undefined;
1939
+ }, {}, {
1940
+ length: number;
1941
+ }>;
1942
+ revokedAt: drizzle_orm_sqlite_core.SQLiteColumn<{
1943
+ name: "revoked_at";
1944
+ tableName: "credential_setup_sessions";
1945
+ dataType: "string";
1946
+ columnType: "SQLiteText";
1947
+ data: string;
1948
+ driverParam: string;
1949
+ notNull: false;
1950
+ hasDefault: false;
1951
+ isPrimaryKey: false;
1952
+ isAutoincrement: false;
1953
+ hasRuntimeDefault: false;
1954
+ enumValues: [string, ...string[]];
1955
+ baseColumn: never;
1956
+ identity: undefined;
1957
+ generated: undefined;
1958
+ }, {}, {
1959
+ length: number;
1960
+ }>;
1961
+ id: drizzle_orm_sqlite_core.SQLiteColumn<{
1962
+ name: "id";
1963
+ tableName: "credential_setup_sessions";
1964
+ dataType: "string";
1965
+ columnType: "SQLiteText";
1966
+ data: string;
1967
+ driverParam: string;
1968
+ notNull: true;
1969
+ hasDefault: true;
1970
+ isPrimaryKey: true;
1971
+ isAutoincrement: false;
1972
+ hasRuntimeDefault: true;
1973
+ enumValues: [string, ...string[]];
1974
+ baseColumn: never;
1975
+ identity: undefined;
1976
+ generated: undefined;
1977
+ }, {}, {
1978
+ length: number;
1979
+ }>;
1980
+ createdAt: drizzle_orm_sqlite_core.SQLiteColumn<{
1981
+ name: "created_at";
1982
+ tableName: "credential_setup_sessions";
1983
+ dataType: "string";
1984
+ columnType: "SQLiteText";
1985
+ data: string;
1986
+ driverParam: string;
1987
+ notNull: false;
1988
+ hasDefault: true;
1989
+ isPrimaryKey: false;
1990
+ isAutoincrement: false;
1991
+ hasRuntimeDefault: true;
1992
+ enumValues: [string, ...string[]];
1993
+ baseColumn: never;
1994
+ identity: undefined;
1995
+ generated: undefined;
1996
+ }, {}, {
1997
+ length: number;
1998
+ }>;
1999
+ updatedAt: drizzle_orm_sqlite_core.SQLiteColumn<{
2000
+ name: "updated_at";
2001
+ tableName: "credential_setup_sessions";
2002
+ dataType: "string";
2003
+ columnType: "SQLiteText";
2004
+ data: string;
2005
+ driverParam: string;
2006
+ notNull: false;
2007
+ hasDefault: true;
2008
+ isPrimaryKey: false;
2009
+ isAutoincrement: false;
2010
+ hasRuntimeDefault: true;
2011
+ enumValues: [string, ...string[]];
2012
+ baseColumn: never;
2013
+ identity: undefined;
2014
+ generated: undefined;
2015
+ }, {}, {
2016
+ length: number;
2017
+ }>;
2018
+ };
2019
+ dialect: "sqlite";
2020
+ }>;
1660
2021
  readonly roles: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
1661
2022
  name: "roles";
1662
2023
  schema: undefined;
@@ -2012,7 +2373,9 @@ type Permission = typeof permissionsTable.$inferSelect;
2012
2373
  type NewPermission = typeof permissionsTable.$inferInsert;
2013
2374
  type Token = typeof tokensTable.$inferSelect;
2014
2375
  type NewToken = typeof tokensTable.$inferInsert;
2376
+ type CredentialSetupSession = typeof credentialSetupSessionsTable.$inferSelect;
2377
+ type NewCredentialSetupSession = typeof credentialSetupSessionsTable.$inferInsert;
2015
2378
  type RolePermission = typeof rolePermissionsTable.$inferSelect;
2016
2379
  type NewRolePermission = typeof rolePermissionsTable.$inferInsert;
2017
2380
 
2018
- 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, tokensTable, usersTable };
2381
+ 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, tokensTable, usersTable };
@@ -64,6 +64,18 @@ var tokensTable = sqliteTable("tokens", {
64
64
  userIdIdx: index("tokens_user_id_idx").on(table.userId),
65
65
  expiresAtIdx: index("tokens_expires_at_idx").on(table.expiresAt)
66
66
  }));
67
+ var credentialSetupSessionsTable = sqliteTable("credential_setup_sessions", {
68
+ ...baseFields(16),
69
+ userId: text("user_id").references(() => usersTable.id, { onDelete: "cascade" }).notNull(),
70
+ purpose: text("purpose").notNull(),
71
+ tokenHash: text("token_hash").notNull().unique(),
72
+ expiresAt: text("expires_at").notNull(),
73
+ consumedAt: text("consumed_at"),
74
+ revokedAt: text("revoked_at")
75
+ }, (table) => ({
76
+ userPurposeIdx: index("credential_setup_sessions_user_purpose_idx").on(table.userId, table.purpose),
77
+ expiresAtIdx: index("credential_setup_sessions_expires_at_idx").on(table.expiresAt)
78
+ }));
67
79
  var rolePermissionsTable = sqliteTable("role_permissions", {
68
80
  ...baseFields(10),
69
81
  roleId: text("role_id").notNull().references(() => rolesTable.id, { onDelete: "cascade" }),
@@ -75,6 +87,7 @@ var authSchema = {
75
87
  users: usersTable,
76
88
  oauthAccounts: oauthAccountsTable,
77
89
  tokens: tokensTable,
90
+ credentialSetupSessions: credentialSetupSessionsTable,
78
91
  roles: rolesTable,
79
92
  permissions: permissionsTable,
80
93
  rolePermissions: rolePermissionsTable
@@ -82,6 +95,7 @@ var authSchema = {
82
95
  export {
83
96
  authSchema,
84
97
  baseFields,
98
+ credentialSetupSessionsTable,
85
99
  oauthAccountsTable,
86
100
  permissionsTable,
87
101
  rolePermissionsTable,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "najm-auth",
3
- "version": "2.0.11",
3
+ "version": "2.0.13",
4
4
  "description": "Authentication and authorization library for najm framework",
5
5
  "type": "module",
6
6
  "files": [