feat: allow restrict Pomodoro via password

- introduce password flag in server command line options
- update clientCommand model
- add password requirement for controlling the Pomodoro timer
- document password in README
This commit is contained in:
Sebastian Mark 2024-10-21 15:36:26 +02:00
parent 8deb642a7e
commit f991ba885d
5 changed files with 38 additions and 26 deletions

View file

@ -22,14 +22,18 @@ Both client commands (sent to the server) and server messages (sent to the clien
### Client Commands
Clients communicate with the server by sending JSON-encoded commands. Each command must include a `command` field specifying the action to perform. Here are the available commands:
Clients communicate with the server by sending JSON-encoded commands. Each command must include a `command` field specifying the action to perform and the control `password` required to manage the Pomodoro timer. The password is set by the server (see [Usage](#usage)).
If the client sends a command with an incorrect password it will not be allowed to control the Pomodoro, but will still receive server messages (see below). By default the password is an empty string which allows everyone to control the Pomodoro. In this case, the `password` field may be omitted in the client's command.
Here are the available commands:
| Command | Action | Example Sent by Client |
|----------|-------------------------------------|-----------------------------------|
| `start` | Starts a new Pomodoro session | `{"command": "start"}` |
| `pause` | Pauses the current session | `{"command": "pause"}` |
| `resume` | Resumes a paused session | `{"command": "resume"}` |
| `reset` | Stops and resets the current session| `{"command": "reset"}` |
| `start` | Starts a new Pomodoro session | `{"command": "start", "password": ""}` |
| `pause` | Pauses the current session | `{"command": "pause", "password": ""}` |
| `resume` | Resumes a paused session | `{"command": "resume", "password": ""}` |
| `reset` | Stops and resets the current session| `{"command": "reset", "password": ""}` |
#### Optional Start Parameters
@ -39,6 +43,7 @@ Example:
```json
{
command: "start",
password: "foobar",
config: {
"work": 10, // Length of the work session in seconds
"shortBreak": 5, // Length of the short break in seconds