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.
- package/README.md +47 -2
- package/dist/index.d.ts +90 -2
- package/dist/index.js +330 -17
- package/dist/schema/pg.d.ts +328 -1
- package/dist/schema/pg.js +14 -0
- package/dist/schema/sqlite.d.ts +364 -1
- package/dist/schema/sqlite.js +14 -0
- package/package.json +1 -1
package/dist/schema/sqlite.d.ts
CHANGED
|
@@ -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 };
|
package/dist/schema/sqlite.js
CHANGED
|
@@ -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,
|