mirror of
https://github.com/fosrl/pangolin.git
synced 2025-07-28 14:44:55 +02:00
started integrating auth with lucia
This commit is contained in:
parent
a33a8d7367
commit
fc5dca136f
20 changed files with 1341 additions and 61 deletions
|
@ -8,32 +8,29 @@ export const orgs = sqliteTable("orgs", {
|
|||
domain: text("domain").notNull(),
|
||||
});
|
||||
|
||||
// Users table
|
||||
export const users = sqliteTable("users", {
|
||||
userId: integer("userId").primaryKey({ autoIncrement: true }),
|
||||
orgId: integer("orgId").references(() => orgs.orgId, { onDelete: "cascade" }),
|
||||
name: text("name").notNull(),
|
||||
email: text("email").notNull(),
|
||||
groups: text("groups"),
|
||||
});
|
||||
|
||||
// Sites table
|
||||
export const sites = sqliteTable("sites", {
|
||||
siteId: integer("siteId").primaryKey({ autoIncrement: true }),
|
||||
orgId: integer("orgId").references(() => orgs.orgId, { onDelete: "cascade" }),
|
||||
exitNode: integer("exitNode").references(() => exitNodes.exitNodeId, { onDelete: "set null" }),
|
||||
orgId: integer("orgId").references(() => orgs.orgId, {
|
||||
onDelete: "cascade",
|
||||
}),
|
||||
exitNode: integer("exitNode").references(() => exitNodes.exitNodeId, {
|
||||
onDelete: "set null",
|
||||
}),
|
||||
name: text("name").notNull(),
|
||||
subdomain: text("subdomain"),
|
||||
pubKey: text("pubKey"),
|
||||
subnet: text("subnet"),
|
||||
megabytesIn: integer("bytesIn"),
|
||||
megabytesOut: integer("bytesOut")
|
||||
megabytesOut: integer("bytesOut"),
|
||||
});
|
||||
|
||||
// Resources table
|
||||
export const resources = sqliteTable("resources", {
|
||||
resourceId: text("resourceId", { length: 2048 }).primaryKey(),
|
||||
siteId: integer("siteId").references(() => sites.siteId, { onDelete: "cascade" }),
|
||||
siteId: integer("siteId").references(() => sites.siteId, {
|
||||
onDelete: "cascade",
|
||||
}),
|
||||
name: text("name").notNull(),
|
||||
subdomain: text("subdomain"),
|
||||
});
|
||||
|
@ -41,7 +38,9 @@ export const resources = sqliteTable("resources", {
|
|||
// Targets table
|
||||
export const targets = sqliteTable("targets", {
|
||||
targetId: integer("targetId").primaryKey({ autoIncrement: true }),
|
||||
resourceId: text("resourceId").references(() => resources.resourceId, { onDelete: "cascade" }),
|
||||
resourceId: text("resourceId").references(() => resources.resourceId, {
|
||||
onDelete: "cascade",
|
||||
}),
|
||||
ip: text("ip").notNull(),
|
||||
method: text("method").notNull(),
|
||||
port: integer("port").notNull(),
|
||||
|
@ -61,10 +60,28 @@ export const exitNodes = sqliteTable("exitNodes", {
|
|||
// Routes table
|
||||
export const routes = sqliteTable("routes", {
|
||||
routeId: integer("routeId").primaryKey({ autoIncrement: true }),
|
||||
exitNodeId: integer("exitNodeId").references(() => exitNodes.exitNodeId, { onDelete: "cascade" }),
|
||||
exitNodeId: integer("exitNodeId").references(() => exitNodes.exitNodeId, {
|
||||
onDelete: "cascade",
|
||||
}),
|
||||
subnet: text("subnet").notNull(),
|
||||
});
|
||||
|
||||
// Users table
|
||||
export const users = sqliteTable("user", {
|
||||
id: text("id").primaryKey(), // has to be id not userId for lucia
|
||||
email: text("email").notNull().unique(),
|
||||
passwordHash: text("passwordHash").notNull(),
|
||||
});
|
||||
|
||||
// Sessions table
|
||||
export const sessions = sqliteTable("session", {
|
||||
id: text("id").primaryKey(), // has to be id not sessionId for lucia
|
||||
userId: text("userId")
|
||||
.notNull()
|
||||
.references(() => users.id),
|
||||
expiresAt: integer("expiresAt").notNull(),
|
||||
});
|
||||
|
||||
// Define the model types for type inference
|
||||
export type Org = InferSelectModel<typeof orgs>;
|
||||
export type User = InferSelectModel<typeof users>;
|
||||
|
@ -73,3 +90,4 @@ export type Resource = InferSelectModel<typeof resources>;
|
|||
export type ExitNode = InferSelectModel<typeof exitNodes>;
|
||||
export type Route = InferSelectModel<typeof routes>;
|
||||
export type Target = InferSelectModel<typeof targets>;
|
||||
export type Session = InferSelectModel<typeof sessions>;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue