Add Tenants to Administration, and let an account be put in one
A tenant is a separate organisation on one server: its own people, domains and limits, and an administrator who manages only what is in it. It gets a section under Access, gated by sysTenantQuery and sysTenantGet, with a notice on a server that does not report Enterprise, where anyone inside a tenant is held to an ordinary user's permissions. The panel edits the tenant's name, logo, role and limits. The logo is an https address, drawn through the image proxy the strict image policy requires, or an image data URL. Limits change one quotas/<name> pointer each, so the four ihasmail does not offer keep their values, and an empty field is no limit. The role is the most anyone inside can be allowed. Stalwart keeps no list on a tenant -- each account, group, domain, list and role names its own -- so what a tenant holds is counted with memberTenantId queries and shown against its limits. Domains are added and taken out from the tenant's panel, one memberTenantId change each; only a domain in no tenant can be added, and its accounts stay where they are. Delete is offered once every count reads zero. A tenant does nothing until someone administers it, so the account panel gains a Tenant choice for an administrator who can read tenants: an Administrator inside a tenant administers that tenant. Nobody moves their own account. The mock has a tenant holding a domain and an administrator, a spare domain to assign, memberTenantId filters on every query, and Stalwart's rule that only an administrator outside every tenant may move things into one. A test of taking a domain back out found that the mock's pointer handling dropped a top-level null instead of storing it, so nothing had ever been cleared that way; it stores null now, as the server reads it back. Nothing about tenants has been written on a live server: production has none. KNOWN-ISSUES says what was read from source. Thirty-nine new strings and one plural, in all nine catalogues.
This commit is contained in:
@@ -256,6 +256,45 @@ export const catalog: Catalog = {
|
||||
"This role no longer exists. Someone may have deleted it.": "Ce rôle n’existe plus. Quelqu’un l’a peut-être supprimé.",
|
||||
"the default roles": "les rôles par défaut",
|
||||
"The server did not say whether the role was created.": "Le serveur n’a pas indiqué si le rôle a été créé.",
|
||||
"No tenant": "Aucun locataire",
|
||||
"You can't move your own account into a tenant.": "Vous ne pouvez pas déplacer votre propre compte dans un locataire.",
|
||||
"An account in a tenant is limited by the tenant's role and counts towards its limits, and Administrator means administrator of that tenant.": "Un compte dans un locataire est limité par le rôle du locataire et compte dans ses limites, et Administrateur signifie administrateur de ce locataire.",
|
||||
"Tenants": "Locataires",
|
||||
"Storage in GB": "Stockage en Go",
|
||||
"Default tenant roles": "Rôles de locataire par défaut",
|
||||
"A tenant needs a name.": "Un locataire a besoin d’un nom.",
|
||||
"New tenant": "Nouveau locataire",
|
||||
"{used} used": "{used} utilisés",
|
||||
"Your role lets you view tenants but not change them.": "Votre rôle vous permet de consulter les locataires, mais pas de les modifier.",
|
||||
"Logo": "Logo",
|
||||
"An https address or a data URL of an image. Stalwart shows it to the tenant's people where it shows a logo.": "Une adresse https ou une URL data d’image. Stalwart l’affiche aux personnes du locataire là où il affiche un logo.",
|
||||
"What it holds": "Contenu",
|
||||
"{n} of {limit}": "{n} sur {limit}",
|
||||
"Limits": "Limites",
|
||||
"Stalwart refuses to create more than a limit allows. An empty field is no limit.": "Stalwart refuse de créer au-delà d’une limite. Un champ vide signifie aucune limite.",
|
||||
"The most anyone in this tenant can be allowed: their own roles are cut down to what these grant. Only roles whose permissions you hold yourself are offered.": "Le maximum autorisé à quiconque dans ce locataire : ses propres rôles sont réduits à ce que ceux-ci accordent. Seuls les rôles dont vous détenez vous-même les autorisations sont proposés.",
|
||||
"Checking what is still in this tenant…": "Vérification de ce que contient encore ce locataire…",
|
||||
"It still holds accounts, domains or other things. Move them out first.": "Il contient encore des comptes, des domaines ou d’autres éléments. Déplacez-les d’abord.",
|
||||
"Create tenant": "Créer le locataire",
|
||||
"Added {domain} to {tenant}": "{domain} ajouté à {tenant}",
|
||||
"Took {domain} out of {tenant}": "{domain} retiré de {tenant}",
|
||||
"Take {domain} out of the tenant": "Retirer {domain} du locataire",
|
||||
"No domains in this tenant yet": "Aucun domaine dans ce locataire pour l’instant",
|
||||
"Domain to add": "Domaine à ajouter",
|
||||
"Only domains in no tenant can be added. The accounts already on a domain stay where they are; move each from its own panel.": "Seuls les domaines hors de tout locataire peuvent être ajoutés. Les comptes déjà sur un domaine restent où ils sont ; déplacez chacun depuis son propre panneau.",
|
||||
"An empty tenant can be deleted.": "Un locataire vide peut être supprimé.",
|
||||
"Delete tenant…": "Supprimer le locataire…",
|
||||
"Still holds {things}. Move them out first.": "Contient encore {things}. Déplacez-les d’abord.",
|
||||
"Delete tenant": "Supprimer le locataire",
|
||||
"Separate organisations on one server, each with its own people, domains and limits.": "Des organisations distinctes sur un même serveur, chacune avec ses personnes, ses domaines et ses limites.",
|
||||
"Tenants are a Stalwart Enterprise feature. This server does not report Enterprise, so anyone inside a tenant has only an ordinary user's permissions.": "Les locataires sont une fonctionnalité de Stalwart Enterprise. Ce serveur ne se déclare pas Enterprise : toute personne dans un locataire n’a donc que les autorisations d’un utilisateur ordinaire.",
|
||||
"Search tenants": "Rechercher des locataires",
|
||||
"No tenants match": "Aucun locataire ne correspond",
|
||||
"No tenants yet": "Aucun locataire pour l’instant",
|
||||
"Account limit": "Limite de comptes",
|
||||
"The server allows no more tenants.": "Le serveur n’autorise pas d’autres locataires.",
|
||||
"This tenant no longer exists. Someone may have deleted it.": "Ce locataire n’existe plus. Quelqu’un l’a peut-être supprimé.",
|
||||
"The server did not say whether the tenant was created.": "Le serveur n’a pas indiqué si le locataire a été créé.",
|
||||
"User": "Utilisateur",
|
||||
"Administrator": "Administrateur",
|
||||
"Custom role": "Rôle personnalisé",
|
||||
@@ -1654,6 +1693,7 @@ export const catalog: Catalog = {
|
||||
"{n} recipients": { one: "{n} destinataire", other: "{n} destinataires" },
|
||||
"Grants {n} permissions": { one: "Accorde {n} autorisation", other: "Accorde {n} autorisations" },
|
||||
"{n} roles": { one: "{n} rôle", other: "{n} rôles" },
|
||||
"{n} tenants": { one: "{n} locataire", other: "{n} locataires" },
|
||||
"{n} DKIM keys": { one: "{n} clé DKIM", other: "{n} clés DKIM" },
|
||||
"{n} other items": { one: "{n} autre élément", other: "{n} autres éléments" },
|
||||
// ── Administration ────────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user