In this exercise you will design a user authentication system for modern a Web or mobile app, following the industry's best practices. Implement user register / login / change password functionality, using the Argon2 secure password hashing with random salt. Keep the usernames and their corresponding Argon2 hashed passwords (along with the Argon2 algorithm parameters and the random salt) as key-value pairs in the form username:argon2hash, in a simple JSON document. In the real world you may use a database instead of JSON document, but let's keep the exercise simple.
...
TODO
...
Input: username + password + JSON holding all current accounts.
Output: modified JSON file or "user exists" exception.
...
TODO
...
Input: username + password + JSON holding all current accounts.
Output: correct / incorrect login.
...
TODO
...
Input: username + old password + new password + JSON holding all current accounts.
Output: modified JSON file or "user exists" exception.
...
TODO
...
Input: username + new password + JSON holding all current accounts.
Output: modified JSON file or "user exists" exception.
...
TODO
...