la5nta / pat

A cross-platform Winlink client written in Go
https://getpat.io
MIT License
488 stars 86 forks source link

Add Winlink recovery email address to the config file #442

Closed ns7c closed 6 months ago

ns7c commented 8 months ago

To assist new users who loose their password, please add the Winlink recovery email address to the config file when setting up a new account. The Pat key is configured to allow access to the necessary API. The API can be found at api.winlink.org. A search for 'recovery' will list out the available API and param requirements: AccountPasswordRecoveryEmailGet JSON XML JSV AccountPasswordRecoveryEmailSet JSON XML JSV

-Scott, NS7C

martinhpedersen commented 8 months ago

Thanks Scott!

I agree that it would be nice if we could facilitate new Winlink users to set a password recovery email.

However, I'm not sure requiring it as a config field is the correct approach. It may get out of sync and we don't want to overwrite config values based on some remote API response. Another problem is how to handle conflicting values from different config files across multiple devices.

Instead I'd prefer to occasionally call AccountPasswordRecoveryEmailGet and warn the user if no recovery address is set. We could optionally prompt the user to set one, to further assist the user to "do the right thing".

In conjunction we should provide a feature to view and set the registered recovery address via a CLI command.

To make things even smoother, we could parse the initial "here's your password" message when first received, store the password and prompt the user to add a recovery email. However this would require identifying the message properly, as well as having the password (and associated callsign) provided in a machine-readable format. Without the password, we can't call AccountPasswordRecoveryEmailSet.

ns7c commented 8 months ago

Thanks Martin, your approach sounds reasonable. Winlink Express queries the account on startup (if Internet is available) and warns the user if there is no recovery address stored.