mirror of
https://github.com/fosrl/pangolin.git
synced 2025-08-04 10:05:53 +02:00
successful log in loop poc
This commit is contained in:
parent
7556a59e11
commit
53be2739bb
37 changed files with 789 additions and 474 deletions
|
@ -106,8 +106,14 @@ export const exitNodes = sqliteTable("exitNodes", {
|
|||
|
||||
export const users = sqliteTable("user", {
|
||||
userId: text("id").primaryKey(),
|
||||
email: text("email").notNull().unique(),
|
||||
passwordHash: text("passwordHash").notNull(),
|
||||
email: text("email"),
|
||||
username: text("username").notNull(),
|
||||
name: text("name"),
|
||||
type: text("type").notNull(), // "internal", "oidc"
|
||||
idpId: integer("idpId").references(() => idp.idpId, {
|
||||
onDelete: "cascade"
|
||||
}),
|
||||
passwordHash: text("passwordHash"),
|
||||
twoFactorEnabled: integer("twoFactorEnabled", { mode: "boolean" })
|
||||
.notNull()
|
||||
.default(false),
|
||||
|
@ -340,12 +346,6 @@ export const resourceSessions = sqliteTable("resourceSessions", {
|
|||
.notNull()
|
||||
.default(false),
|
||||
isRequestToken: integer("isRequestToken", { mode: "boolean" }),
|
||||
idpSessionId: text("idpSessionId").references(
|
||||
() => idpSessions.idpSessionId,
|
||||
{
|
||||
onDelete: "cascade"
|
||||
}
|
||||
),
|
||||
userSessionId: text("userSessionId").references(() => sessions.sessionId, {
|
||||
onDelete: "cascade"
|
||||
}),
|
||||
|
@ -424,6 +424,7 @@ export const supporterKey = sqliteTable("supporterKey", {
|
|||
// Identity Providers
|
||||
export const idp = sqliteTable("idp", {
|
||||
idpId: integer("idpId").primaryKey({ autoIncrement: true }),
|
||||
name: text("name").notNull(),
|
||||
type: text("type").notNull()
|
||||
});
|
||||
|
||||
|
@ -445,9 +446,8 @@ export const idpOidcConfig = sqliteTable("idpOidcConfig", {
|
|||
.notNull()
|
||||
.default(false),
|
||||
identifierPath: text("identifierPath").notNull(),
|
||||
emailPath: text("emailPath"), // by default, this is "email"
|
||||
namePath: text("namePath"), // by default, this is "name"
|
||||
roleMapping: text("roleMapping"),
|
||||
emailPath: text("emailPath"),
|
||||
namePath: text("namePath"),
|
||||
scopes: text("scopes").notNull()
|
||||
});
|
||||
|
||||
|
@ -455,41 +455,11 @@ export const idpOrg = sqliteTable("idpOrg", {
|
|||
idpId: integer("idpId")
|
||||
.notNull()
|
||||
.references(() => idp.idpId, { onDelete: "cascade" }),
|
||||
orgId: text("orgId")
|
||||
.notNull()
|
||||
.references(() => orgs.orgId, { onDelete: "cascade" })
|
||||
});
|
||||
|
||||
// IDP User
|
||||
export const idpUser = sqliteTable("idpUser", {
|
||||
idpUserId: text("idpUserId").primaryKey(),
|
||||
identifier: text("identifier").notNull(),
|
||||
idpId: integer("idpId")
|
||||
.notNull()
|
||||
.references(() => idp.idpId, { onDelete: "cascade" }),
|
||||
email: text("email"),
|
||||
name: text("name")
|
||||
});
|
||||
|
||||
// IDP User Organization Link
|
||||
export const idpUserOrg = sqliteTable("idpUserOrg", {
|
||||
idpUserId: text("idpUserId")
|
||||
.notNull()
|
||||
.references(() => idpUser.idpUserId, { onDelete: "cascade" }),
|
||||
orgId: text("orgId")
|
||||
.notNull()
|
||||
.references(() => orgs.orgId, { onDelete: "cascade" }),
|
||||
roleId: integer("roleId")
|
||||
.notNull()
|
||||
.references(() => roles.roleId, { onDelete: "cascade" })
|
||||
});
|
||||
|
||||
export const idpSessions = sqliteTable("idpSessions", {
|
||||
idpSessionId: text("idpSessionId").primaryKey(),
|
||||
idpUserId: text("idpUserId")
|
||||
.notNull()
|
||||
.references(() => idpUser.idpUserId, { onDelete: "cascade" }),
|
||||
expiresAt: integer("expiresAt").notNull()
|
||||
roleMapping: text("roleMapping"),
|
||||
orgMapping: text("orgMapping")
|
||||
});
|
||||
|
||||
export type Org = InferSelectModel<typeof orgs>;
|
||||
|
@ -528,7 +498,4 @@ export type ResourceRule = InferSelectModel<typeof resourceRules>;
|
|||
export type Domain = InferSelectModel<typeof domains>;
|
||||
export type SupporterKey = InferSelectModel<typeof supporterKey>;
|
||||
export type Idp = InferSelectModel<typeof idp>;
|
||||
export type IdpUser = InferSelectModel<typeof idpUser>;
|
||||
export type IdpOrg = InferSelectModel<typeof idpOrg>;
|
||||
export type IdpUserOrg = InferSelectModel<typeof idpUserOrg>;
|
||||
export type IdpSession = InferSelectModel<typeof idpSessions>;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue