After signing up my atproto identity should be permanently and immutable attached to my discourse user. This would deliver automatic verification and would maintain the handle as the primary identifier of a user.
My suggestion is to:
- Store the user’s handle in the username field. Don’t allow this field to be changed
- Autofill their Bluesky profile’s display name and avatar into the full name and avatar fields. Allow these to be editable
- When a user changes their atproto handle, update their username on their behalf
- Somehow add their DID to the profile (immutable of course)
It’s not immediately obvious what to do when a user has an invalid handle. I’d suggest giving them a random “invalid-handle” username while their handle is invalid. Alternatively the username could potentially just be their DID at this point.