diff --git a/docs-users/fr/support/faq.md b/docs-users/fr/support/faq.md index 58171bb25..a4a24482f 100644 --- a/docs-users/fr/support/faq.md +++ b/docs-users/fr/support/faq.md @@ -92,3 +92,27 @@ Toute propriété de l'élément sera disponible, ainsi que: - `{zoom}` → le zoom actuel de la carte - `{lat}` → la latitude du centre actuel de la carte - `{lng}` → la longitude du centre actuel de la carte + + +## Quels statuts peut avoir une carte ? {: #map-statuses} + +### En accès + +* **Brouillon (privé)**: Vous seul et votre équipe pouvez accéder à la carte. +* **Tout le monde (public)**: Tout le monde peut accéder à la carte, qui est visible dans la recherche et la page d’accueil. La carte est indexée dans les moteurs de recherche (Google, etc.). +* **Quiconque a le lien**: La carte est visible par toutes les personnes qui en ont le lien. Elle n’est pas indexée dans les moteurs de recherche. +* **Éditeurs et équipe seulement**: Vous seul et votre équipe pouvez accéder à la carte. + +Les personnes affichant une carte à laquelle elles n’ont pas accès auront une page d’erreur 403. + +### En édition + +* **Propriétaire uniquement**: Vous seul pouvez modifier la carte. +* **Éditeurs et équipe seulement**: Vous seul et votre équipe pouvez modifier la carte. +* **Tout le monde**: Tout le monde peut modifier la carte, même les comptes anonymes. + +Pour les cartes créées sans compte : + +* **Modifiable seulement avec le lien d’édition secret**: Seules les personnes avec un lien d’édition pourront modifier la carte. + +Ces réglages sont aussi disponibles pour chaque calque. diff --git a/docs-users/support/faq.md b/docs-users/support/faq.md index 990f928b0..0e01a5757 100644 --- a/docs-users/support/faq.md +++ b/docs-users/support/faq.md @@ -52,7 +52,7 @@ With macOS, replace `Ctrl` by `Cmd`. When the condition match, the associated style will be applied to the corresponding feature. -## How to use variables ? {: #variables} +## How to use variables? {: #variables} In general, using a variable is as simple as `{myvar}`. @@ -92,3 +92,27 @@ Any property of the feature will be available, plus: - `{zoom}` → the current map zoom - `{lat}` → the latitude of the current map center - `{lng}` → the longitude of the current map center + + +## Which statuses can have a map? {: #map-statuses} + +### Access statuses + +* **Draft (private)**: Only you and your collaborators are able to see the map. +* **Everybody (public)**: Everybody can see your map, it is listed on search results and potentially the homepage. It is indexed by search engines like Google. +* **Anyone with link**: The map will be accessible only to people knowing the link. The map is not indexed by search engines. +* **Editors and team only**: Only you and your collaborators will be able to see the map. + +Providing a link of a map to unallowed people will display a `403 Forbidden` error. + +### Edit statuses + +* **Owner only**: only the owner of the map can edit it. +* **Editors and team only**: the owner, editors and members of the linked team will be able to edit the map. +* **Everyone**: Everybody can edit the map without even being logged in. + +Only for maps created without an account: + +* **Only editable with secret edit link**: Only people with a secret link will be able to edit the map. + +These settings are also available for each layer. diff --git a/umap/decorators.py b/umap/decorators.py index 5e808d12f..6405615ec 100644 --- a/umap/decorators.py +++ b/umap/decorators.py @@ -1,9 +1,11 @@ from functools import wraps from django.conf import settings +from django.core.exceptions import PermissionDenied from django.http import HttpResponseForbidden from django.shortcuts import get_object_or_404 from django.urls import reverse_lazy +from django.utils.translation import gettext as _ from .models import Map, Team from .views import simple_json_response @@ -55,7 +57,7 @@ def wrapper(request, *args, **kwargs): map_inst = get_object_or_404(Map, pk=kwargs["map_id"]) kwargs["map_inst"] = map_inst # Avoid rerequesting the map in the view if not map_inst.can_view(request): - return HttpResponseForbidden() + raise PermissionDenied(_("This map is not publicly available")) return view_func(request, *args, **kwargs) return wrapper diff --git a/umap/static/umap/content.css b/umap/static/umap/content.css index 392ac85a3..d13dce0b8 100644 --- a/umap/static/umap/content.css +++ b/umap/static/umap/content.css @@ -208,31 +208,36 @@ input[type="submit"], } /* **************************** */ -/* 404 */ +/* 40x */ /* **************************** */ -.content404 { - width: 400px; +.content-40x { + max-width: 600px; margin-left: auto; margin-right: auto; margin-top: 100px; - text-align: center; } -.content404 a { +.content-40x a { color: #3A4259; } -.content404 h1 { - font-size: 10em; +.content-40x h1 { + font-size: 2em; margin-bottom: 0; - line-height: 0.5em; margin-top: 40px; } -.content404 h2 { - font-size: 4em; - margin-top: 0; -} -.content404 img { +.content-404 img { width: 32%; } +.page-40x { + background-image: url('./img/logo_lightcyan.svg'); + background-repeat: no-repeat; + background-size: contain; + background-position: center; + height: 75vh; + margin: 1rem; +} +.page-40x a { + text-decoration: underline; +} /* **************************** */ diff --git a/umap/static/umap/img/logo_lightcyan.svg b/umap/static/umap/img/logo_lightcyan.svg new file mode 100644 index 000000000..d9531f681 --- /dev/null +++ b/umap/static/umap/img/logo_lightcyan.svg @@ -0,0 +1,4 @@ + + + + diff --git a/umap/templates/403.html b/umap/templates/403.html new file mode 100644 index 000000000..2546e4c66 --- /dev/null +++ b/umap/templates/403.html @@ -0,0 +1,12 @@ +{% extends "40x.html" %} + +{% load i18n %} + +{% block content %} +
+

{{ exception }}

+

{% blocktrans %}Find out here the documentation on how to manage map’s permissions.{% endblocktrans %}

+
+

{% trans "← Go to the homepage" %}

+
+{% endblock content %} diff --git a/umap/templates/404.html b/umap/templates/404.html index aba824568..7916afb40 100644 --- a/umap/templates/404.html +++ b/umap/templates/404.html @@ -1,19 +1,10 @@ -{% extends "base.html" %} +{% extends "40x.html" %} {% load i18n static %} {% block content %} -
- -

- 4 - 0 - 4 -

-

- Not Found -

-
+
+

{% trans "404 Page Not Found" %}

+

{% trans "← Go to the homepage" %}

{% endblock content %} diff --git a/umap/templates/40x.html b/umap/templates/40x.html new file mode 100644 index 000000000..1fda935e5 --- /dev/null +++ b/umap/templates/40x.html @@ -0,0 +1,9 @@ +{% extends "base.html" %} + +{% load umap_tags %} +{% block body_class %}page-40x{% endblock body_class %} +{% block extra_head %} + {% umap_css %} + {{ block.super }} + {% umap_js %} +{% endblock extra_head %}