[WIP] Project to bring cross-browser history and bookmarks synchronization.
Go to file
Lorenzo Dellacà 07ec036e4f Implement RESTful API, JWT auth, SQLite storage
This update brings a huge change to the whole system's structure.
A new RESTful API has been implemented, which allows users to register, login
and store data.

The API only supports HTTP POST, and can be accessed via /api/v1/. Requests must
 contain a JSON body with the necessary entries, which are:

 /api/v1/register AND /api/v1/login:
{
    "username": "username",
    "password": "password",
    "encoding": "plaintext/base64"
}

 (Note: passwords can be encoded via "base64" or "plaintext".)

 /api/v1/store:
 {
    "jwt": "encrypted_key_here",
    "url": "https://google.com/"
}

 The flow is:
 - register via /api/v1/register;
 - login via /api/v1/login, listen for JWT token in response;
 - store via /api/v1/store, by sending JWT and URL to store.

 The SQLite database now has 2 tables, "users" and "history".
 The "users" table is used to store user data:
 - username;
 - password, secured via bcrypt;
 - random user UUID.

 The "history" table is used to store browsing history:
 - user UUID, to identify the user;
 - browsed url.

The secret used to sign JWTs is stored in the config.yml file.

 Other new features include SQL-injection protection,
 multiple validity/security checks on usernames and passwords, etc.

Signed-off-by: Lorenzo Dellacà <lorenzo.dellaca@mind-overflow.net>
2020-08-22 12:56:56 +02:00
src/main Implement RESTful API, JWT auth, SQLite storage 2020-08-22 12:56:56 +02:00
.gitignore Implement YAML config, start SQLite implementation 2020-08-21 16:11:32 +02:00
pom.xml Implement RESTful API, JWT auth, SQLite storage 2020-08-22 12:56:56 +02:00
webMarker.iml Initialize Maven project and test functionality 2020-08-21 12:19:56 +02:00