# Change Password

Change user password. Supports both self-service and admin modes.

**Endpoints**:
- Self-service: `PUT /api/auth/password`
- Admin reset: `PUT /api/auth/password/:id`

**Auth**: Required
**Content-Type**: `application/json`

## Self-Service Mode

Users can change their own password by providing current password verification.

### Request Body

| Field | Type | Required | Description |
|--------|------|-----------|-------------|
| current_password | string | Yes | Current password for verification |
| new_password | string | Yes | New password (min 8 chars, complexity required) |
| confirm_password | string | Yes | Must match new_password |

### Example Request

```json
{
  "current_password": "OldPassword123!",
  "new_password": "NewSecureP@ss123!",
  "confirm_password": "NewSecureP@ss123!"
}
```

## Admin Mode

Admins can reset any user's password without knowing the current password.

**URL Parameter**: `:id` - Target user's UUID

### Request Body (Admin Mode)

| Field | Type | Required | Description |
|--------|------|-----------|-------------|
| new_password | string | Yes | New password (min 8 chars, complexity required) |
| confirm_password | string | Yes | Must match new_password |

### Example Admin Request

```json
{
  "new_password": "NewSecureP@ss123!",
  "confirm_password": "NewSecureP@ss123!"
}
```

## Response (200 OK)

```json
{
  "message": "password updated"
}
```

## Error Responses

| Code | Description |
|------|-------------|
| 400 | Invalid input, weak password, or passwords don't match |
| 401 | Current password is incorrect (self-service mode) |
| 403 | Admin access required (admin mode only) |
| 404 | User not found (admin mode only) |
