You should definitely not be encouraging your users to give their private keys to js on other sites, that’s just as bad (or maybe worse) as encouraging them to reuse passwords.
That's a good point... Perhaps a better solution is for them to be able to sign the public keys from the other sites to connect their profiles that way.
Thank you for your feedback. I can see now how a malicious system operator could steal the user's private key by modifying the JS.
The private key is stored in localStorage, but this is not the user's "real" private key which they might use for email, but a temporary device key, which can then be vouched either by admin or by user.
I'm generating the keys in-browser for device-specific keys. I am not asking the users to provide their existing private keys, but I am storing the device keys in localStorage, because, where else?
The advanced users can then use their existing PGP keys to sign the device keys.
But this is not necessary in every environment, because in some situations, e.g. casual chat or internal boards, you don't need that kind of extended security, and temporary device keys, perhaps vouched by the operator, are sufficient.