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:
@@ -254,6 +254,45 @@ export const catalog: Catalog = {
|
||||
"This role no longer exists. Someone may have deleted it.": "Esta função não existe mais. Alguém pode tê-la excluído.",
|
||||
"the default roles": "as funções padrão",
|
||||
"The server did not say whether the role was created.": "O servidor não informou se a função foi criada.",
|
||||
"No tenant": "Nenhum locatário",
|
||||
"You can't move your own account into a tenant.": "Você não pode mover sua própria conta para um locatário.",
|
||||
"An account in a tenant is limited by the tenant's role and counts towards its limits, and Administrator means administrator of that tenant.": "Uma conta em um locatário é limitada pela função do locatário e conta para os limites dele, e Administrador significa administrador desse locatário.",
|
||||
"Tenants": "Locatários",
|
||||
"Storage in GB": "Armazenamento em GB",
|
||||
"Default tenant roles": "Funções padrão de locatário",
|
||||
"A tenant needs a name.": "Um locatário precisa de um nome.",
|
||||
"New tenant": "Novo locatário",
|
||||
"{used} used": "{used} usados",
|
||||
"Your role lets you view tenants but not change them.": "Sua função permite ver os locatários, mas não alterá-los.",
|
||||
"Logo": "Logotipo",
|
||||
"An https address or a data URL of an image. Stalwart shows it to the tenant's people where it shows a logo.": "Um endereço https ou uma URL data de uma imagem. O Stalwart a mostra às pessoas do locatário onde mostra um logotipo.",
|
||||
"What it holds": "O que contém",
|
||||
"{n} of {limit}": "{n} de {limit}",
|
||||
"Limits": "Limites",
|
||||
"Stalwart refuses to create more than a limit allows. An empty field is no limit.": "O Stalwart se recusa a criar mais do que um limite permite. Um campo vazio significa sem 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.": "O máximo que alguém neste locatário pode ter: as funções próprias são reduzidas ao que estas concedem. Só são oferecidas funções cujas permissões você mesmo tem.",
|
||||
"Checking what is still in this tenant…": "Verificando o que ainda há neste locatário…",
|
||||
"It still holds accounts, domains or other things. Move them out first.": "Ele ainda tem contas, domínios ou outros itens. Mova-os primeiro.",
|
||||
"Create tenant": "Criar locatário",
|
||||
"Added {domain} to {tenant}": "{domain} adicionado a {tenant}",
|
||||
"Took {domain} out of {tenant}": "{domain} retirado de {tenant}",
|
||||
"Take {domain} out of the tenant": "Retirar {domain} do locatário",
|
||||
"No domains in this tenant yet": "Nenhum domínio neste locatário ainda",
|
||||
"Domain to add": "Domínio a adicionar",
|
||||
"Only domains in no tenant can be added. The accounts already on a domain stay where they are; move each from its own panel.": "Só podem ser adicionados domínios que não estejam em nenhum locatário. As contas já existentes num domínio ficam onde estão; mova cada uma pelo próprio painel.",
|
||||
"An empty tenant can be deleted.": "Um locatário vazio pode ser excluído.",
|
||||
"Delete tenant…": "Excluir locatário…",
|
||||
"Still holds {things}. Move them out first.": "Ainda tem {things}. Mova-os primeiro.",
|
||||
"Delete tenant": "Excluir locatário",
|
||||
"Separate organisations on one server, each with its own people, domains and limits.": "Organizações separadas em um mesmo servidor, cada uma com suas próprias pessoas, domínios e 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.": "Locatários são um recurso do Stalwart Enterprise. Este servidor não informa ser Enterprise, então qualquer pessoa num locatário tem só as permissões de um usuário comum.",
|
||||
"Search tenants": "Pesquisar locatários",
|
||||
"No tenants match": "Nenhum locatário corresponde",
|
||||
"No tenants yet": "Nenhum locatário ainda",
|
||||
"Account limit": "Limite de contas",
|
||||
"The server allows no more tenants.": "O servidor não permite mais locatários.",
|
||||
"This tenant no longer exists. Someone may have deleted it.": "Este locatário não existe mais. Alguém pode tê-lo excluído.",
|
||||
"The server did not say whether the tenant was created.": "O servidor não informou se o locatário foi criado.",
|
||||
"User": "Usuário",
|
||||
"Administrator": "Administrador",
|
||||
"Custom role": "Função personalizada",
|
||||
@@ -1652,6 +1691,7 @@ export const catalog: Catalog = {
|
||||
"{n} recipients": { one: "{n} destinatário", other: "{n} destinatários" },
|
||||
"Grants {n} permissions": { one: "Concede {n} permissão", other: "Concede {n} permissões" },
|
||||
"{n} roles": { one: "{n} função", other: "{n} funções" },
|
||||
"{n} tenants": { one: "{n} locatário", other: "{n} locatários" },
|
||||
"{n} DKIM keys": { one: "{n} chave DKIM", other: "{n} chaves DKIM" },
|
||||
"{n} other items": { one: "{n} outro item", other: "{n} outros itens" },
|
||||
// ── Administration ────────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user