mirror of
https://github.com/fosrl/pangolin.git
synced 2025-08-21 17:58:27 +02:00
pangctl reset-user-security-keys --email user@example.com This command will: 1. Find the user by email address 2. Check if they have any registered security keys 3. Delete all their security keys from the database 4. Provide feedback on the operation
67 lines
No EOL
2.1 KiB
TypeScript
67 lines
No EOL
2.1 KiB
TypeScript
import { CommandModule } from "yargs";
|
|
import { db, users, securityKeys } from "@server/db";
|
|
import { eq } from "drizzle-orm";
|
|
|
|
type ResetUserSecurityKeysArgs = {
|
|
email: string;
|
|
};
|
|
|
|
export const resetUserSecurityKeys: CommandModule<{}, ResetUserSecurityKeysArgs> = {
|
|
command: "reset-user-security-keys",
|
|
describe: "Reset a user's security keys (passkeys) by deleting all their webauthn credentials",
|
|
builder: (yargs) => {
|
|
return yargs
|
|
.option("email", {
|
|
type: "string",
|
|
demandOption: true,
|
|
describe: "User email address"
|
|
});
|
|
},
|
|
handler: async (argv: { email: string }) => {
|
|
try {
|
|
const { email } = argv;
|
|
|
|
console.log(`Looking for user with email: ${email}`);
|
|
|
|
// Find the user by email
|
|
const [user] = await db
|
|
.select()
|
|
.from(users)
|
|
.where(eq(users.email, email))
|
|
.limit(1);
|
|
|
|
if (!user) {
|
|
console.error(`User with email '${email}' not found`);
|
|
process.exit(1);
|
|
}
|
|
|
|
console.log(`Found user: ${user.email} (ID: ${user.userId})`);
|
|
|
|
// Check if user has any security keys
|
|
const userSecurityKeys = await db
|
|
.select()
|
|
.from(securityKeys)
|
|
.where(eq(securityKeys.userId, user.userId));
|
|
|
|
if (userSecurityKeys.length === 0) {
|
|
console.log(`User '${email}' has no security keys to reset`);
|
|
process.exit(0);
|
|
}
|
|
|
|
console.log(`Found ${userSecurityKeys.length} security key(s) for user '${email}'`);
|
|
|
|
// Delete all security keys for the user
|
|
await db
|
|
.delete(securityKeys)
|
|
.where(eq(securityKeys.userId, user.userId));
|
|
|
|
console.log(`Successfully reset security keys for user '${email}'`);
|
|
console.log(`Deleted ${userSecurityKeys.length} security key(s)`);
|
|
|
|
process.exit(0);
|
|
} catch (error) {
|
|
console.error("Error:", error);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
};
|