Skip to content

Commit 2c4dd35

Browse files
committed
docs: add admin password reset documentation
- Add admin password reset to Features list in README - Add Admin Password Reset section with code examples and security notes - Add Admin Settings section to CONFIG.md with new configuration properties
1 parent 07a6b6b commit 2c4dd35

2 files changed

Lines changed: 43 additions & 0 deletions

File tree

CONFIG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ Welcome to the User Framework SpringBoot Configuration Guide! This document outl
2929
- **Account Deletion (`user.actuallyDeleteAccount`)**: Set to `true` to enable account deletion. Defaults to `false` where accounts are disabled instead of deleted.
3030
- **Registration Email Verification (`user.registration.sendVerificationEmail`)**: Enable (`true`) or disable (`false`) sending verification emails post-registration.
3131

32+
## Admin Settings
33+
34+
- **Admin App URL (`user.admin.appUrl`)**: Base URL for admin-initiated password reset emails. Required when using `initiateAdminPasswordReset(user)` without explicit URL. Example: `https://myapp.com`
35+
- **Session Invalidation Warn Threshold (`user.session.invalidation.warn-threshold`)**: Number of active sessions that triggers a performance warning during session invalidation. Defaults to `1000`.
36+
3237
## Audit Logging
3338

3439
- **Log File Path (`user.audit.logFilePath`)**: The path to the audit log file.

README.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ Check out the [Spring User Framework Demo Application](https://github.com/devond
6262
- Registration, with optional email verification.
6363
- Login and logout functionality.
6464
- Forgot password flow.
65+
- Admin-initiated password reset with optional session invalidation.
6566
- Database-backed user store using Spring JPA.
6667
- SSO support for Google
6768
- SSO support for Facebook
@@ -521,6 +522,43 @@ Users can:
521522
- Change their password
522523
- Delete their account (configurable to either disable or fully delete)
523524

525+
### Admin Password Reset
526+
527+
Administrators can trigger password resets for users programmatically:
528+
529+
```java
530+
@Autowired
531+
private UserEmailService userEmailService;
532+
533+
// Reset password and invalidate all user sessions
534+
int sessionsInvalidated = userEmailService.initiateAdminPasswordReset(user, appUrl, true);
535+
536+
// Reset password without invalidating sessions
537+
userEmailService.initiateAdminPasswordReset(user, appUrl, false);
538+
539+
// Use configured appUrl (from user.admin.appUrl property)
540+
userEmailService.initiateAdminPasswordReset(user);
541+
```
542+
543+
**Features:**
544+
- Requires `ROLE_ADMIN` authorization (`@PreAuthorize`)
545+
- Optional session invalidation to force re-authentication
546+
- Sends password reset email with secure token
547+
- Comprehensive audit logging with correlation IDs
548+
- Cryptographically secure tokens (256-bit entropy)
549+
550+
**Configuration:**
551+
```yaml
552+
user:
553+
admin:
554+
appUrl: https://myapp.com # Base URL for password reset links
555+
```
556+
557+
**Security Notes:**
558+
- Admin identity is derived from `SecurityContext`, not user input
559+
- Sessions are invalidated *after* email is sent to prevent lockout
560+
- URL validation prevents XSS (blocks javascript:, data: schemes)
561+
524562
## Email Verification
525563

526564

0 commit comments

Comments
 (0)