Skip to content

terms of service checks #747

@scheidtdav

Description

@scheidtdav

Description

Following the discussions in #688, users should be presented with our terms of service (TOS).
This needs to happen when they register and when the terms change.

As service provider of osem, you may want to set the validity of a TOS version to a future date s.t. it starts to apply from some date.
This may be coupled with an email notification (outside of this issue).

Use case

Legal Requirements:

  • User registers and must check a box to agree to the TOS.
  • Registration without agreement is not possible.

Given a new TOS takes effect and the user has not agreed, when the user navigates to the page, the user is presented with an agreement dialog.

Summary:

  • On signup: checkbox
  • New terms of service:
    • Alert after login the user is prompted with an alert: "We have new terms of service. In order to keep on using the openSenseMap, you have to accept those. In case you do not want to accept, you can navigate to your profile and delete your account and devices." Alert links to terms of service page.
  • If the latest terms of service are not accepted, the server blocks the requests coming from that user (UI and API) until they are accepted. Only deletion of devices and account should be allowed.

Implementation ideas (optional)

A time-based database table could hold the information about TOS.
This should probably include version, TOS text, startdatetime and enddatetime.
The latest version always has endddatetime set to null.
When a new version is added, enddatetime is set to the startdatetime of the next version.

Checks, if a user needs to agree to a new version, can be made in entry.server.tsx (or similar) as this always injects the language into every request. It could also inject the status, s.t. a component in the application root can handle the dialog displaying the new TOS for acceptance.

Additional information (optional)

What happens, if the existing users do not accept the new terms of service after X days / weeks is handlet in a separate ticket.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

Status

👀 Ready for Review

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions