refactor: stash

This commit is contained in:
Mauricio Siu
2024-10-02 21:55:54 -06:00
parent ffd19f591d
commit d256998677
32 changed files with 4023 additions and 293 deletions

View File

@@ -12,6 +12,7 @@ export const sshKeys = pgTable("ssh-key", {
.notNull()
.primaryKey()
.$defaultFn(() => nanoid()),
privateKey: text("privateKey").notNull().default(""),
publicKey: text("publicKey").notNull(),
name: text("name").notNull(),
description: text("description"),
@@ -37,6 +38,7 @@ export const apiCreateSshKey = createSchema
.pick({
name: true,
description: true,
privateKey: true,
publicKey: true,
})
.merge(sshKeyCreate.pick({ privateKey: true }));

View File

@@ -3,28 +3,30 @@ import { z } from "zod";
export const sshKeyCreate = z.object({
name: z.string().min(1),
description: z.string().optional(),
publicKey: z.string().refine(
(key) => {
const rsaPubPattern = /^ssh-rsa\s+([A-Za-z0-9+/=]+)\s*(.*)?\s*$/;
const ed25519PubPattern = /^ssh-ed25519\s+([A-Za-z0-9+/=]+)\s*(.*)?\s*$/;
return rsaPubPattern.test(key) || ed25519PubPattern.test(key);
},
{
message: "Invalid public key format",
},
),
privateKey: z.string().refine(
(key) => {
const rsaPrivPattern =
/^-----BEGIN RSA PRIVATE KEY-----\n([A-Za-z0-9+/=\n]+)-----END RSA PRIVATE KEY-----\s*$/;
const ed25519PrivPattern =
/^-----BEGIN OPENSSH PRIVATE KEY-----\n([A-Za-z0-9+/=\n]+)-----END OPENSSH PRIVATE KEY-----\s*$/;
return rsaPrivPattern.test(key) || ed25519PrivPattern.test(key);
},
{
message: "Invalid private key format",
},
),
publicKey: z.string(),
// .refine(
// (key) => {
// const rsaPubPattern = /^ssh-rsa\s+([A-Za-z0-9+/=]+)\s*(.*)?\s*$/;
// const ed25519PubPattern = /^ssh-ed25519\s+([A-Za-z0-9+/=]+)\s*(.*)?\s*$/;
// return rsaPubPattern.test(key) || ed25519PubPattern.test(key);
// },
// {
// message: "Invalid public key format",
// },
// )
privateKey: z.string(),
// .refine(
// (key) => {
// const rsaPrivPattern =
// /^-----BEGIN RSA PRIVATE KEY-----\n([A-Za-z0-9+/=\n]+)-----END RSA PRIVATE KEY-----\s*$/;
// const ed25519PrivPattern =
// /^-----BEGIN OPENSSH PRIVATE KEY-----\n([A-Za-z0-9+/=\n]+)-----END OPENSSH PRIVATE KEY-----\s*$/;
// return rsaPrivPattern.test(key) || ed25519PrivPattern.test(key);
// },
// {
// message: "Invalid private key format",
// },
// ),
});
export const sshKeyUpdate = sshKeyCreate.pick({