Adds an admin CLI command to remove a user’s passkeys (WebAuthn credentials) by email. This is for recovery/support when a user is locked out or needs to re-enroll passkeys.
Command: reset-user-security-keys
Input: --email <user@example.com>
Effect: Deletes all WebAuthn credentials for that user
Output: Clear logs for user lookup, keys found, and keys deleted
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
## 📋 Pull Request Information
**Original PR:** https://github.com/fosrl/pangolin/pull/1237
**Author:** [@adrianeastles](https://github.com/adrianeastles)
**Created:** 8/8/2025
**Status:** ✅ Merged
**Merged:** 8/9/2025
**Merged by:** [@oschwartz10612](https://github.com/oschwartz10612)
**Base:** `dev` ← **Head:** `feature/passkey-pangctl-support`
---
### 📝 Commits (1)
- [`bb84d01`](https://github.com/fosrl/pangolin/commit/bb84d01e1404eaaf758ab4da0cd9f050318931fc) Reset a user's security keys (passkeys) by deleting all their webauthn credentials.
### 📊 Changes
**2 files changed** (+69 additions, -0 deletions)
<details>
<summary>View changed files</summary>
➕ `cli/commands/resetUserSecurityKeys.ts` (+67 -0)
📝 `cli/index.ts` (+2 -0)
</details>
### 📄 Description
## Description
Adds an admin CLI command to remove a user’s passkeys (WebAuthn credentials) by email. This is for recovery/support when a user is locked out or needs to re-enroll passkeys.
- Command: `reset-user-security-keys`
- Input: `--email <user@example.com>`
- Effect: Deletes all WebAuthn credentials for that user
- Output: Clear logs for user lookup, keys found, and keys deleted
## How to test?
Run the command and observe the output.
1) Execute:
```bash
pangctl reset-user-security-keys --email user@example.com
```
2) Expected behaviors:
- If the user exists and has passkeys:
- Output includes:
- “Looking for user with email: user@example.com”
- “Found user: user@example.com (ID: …)”
- “Found N security key(s) for user ‘user@example.com’”
- “Successfully reset security keys for user ‘user@example.com’”
- “Deleted N security key(s)”
- If the user exists but has no passkeys:
- Output includes:
- “User ‘user@example.com’ has no security keys to reset”
- If the user does not exist:
- Output includes:
- “User with email ‘user@example.com’ not found”
## Screenshots
<img width="480" height="73" alt="Screenshot 2025-08-08 at 8 16 06 pm" src="https://github.com/user-attachments/assets/93d91ac6-c182-4ebd-ac86-2611d863c493" />
<img width="560" height="89" alt="Screenshot 2025-08-08 at 8 15 55 pm" src="https://github.com/user-attachments/assets/1d8ab9b4-b089-4671-b653-a294323e9b45" />
<img width="633" height="136" alt="Screenshot 2025-08-08 at 8 15 43 pm" src="https://github.com/user-attachments/assets/bef7b225-b833-403b-972a-3ed2e6914181" />
<img width="819" height="182" alt="Screenshot 2025-08-08 at 8 18 56 pm" src="https://github.com/user-attachments/assets/53933973-7362-42b3-9ecc-c9d25ca5d1c4" />
---
<sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
📋 Pull Request Information
Original PR: https://github.com/fosrl/pangolin/pull/1237
Author: @adrianeastles
Created: 8/8/2025
Status: ✅ Merged
Merged: 8/9/2025
Merged by: @oschwartz10612
Base:
dev← Head:feature/passkey-pangctl-support📝 Commits (1)
bb84d01Reset a user's security keys (passkeys) by deleting all their webauthn credentials.📊 Changes
2 files changed (+69 additions, -0 deletions)
View changed files
➕
cli/commands/resetUserSecurityKeys.ts(+67 -0)📝
cli/index.ts(+2 -0)📄 Description
Description
Adds an admin CLI command to remove a user’s passkeys (WebAuthn credentials) by email. This is for recovery/support when a user is locked out or needs to re-enroll passkeys.
reset-user-security-keys--email <user@example.com>How to test?
Run the command and observe the output.
Execute:
Expected behaviors:
Screenshots
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.