mirror of
https://github.com/eduardogsilva/wireguard_webadmin.git
synced 2025-07-10 18:34:34 +02:00
User Manager app translation
This commit is contained in:
parent
1bd4c04475
commit
77ed501cfc
8 changed files with 375 additions and 93 deletions
Binary file not shown.
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-04-15 10:45-0300\n"
|
"POT-Creation-Date: 2025-04-15 12:13-0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -18,43 +18,43 @@ msgstr ""
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
|
|
||||||
#: console/views.py:24 console/views.py:56
|
#: console/views.py:25 console/views.py:57 user_manager/forms.py:16
|
||||||
msgid "Console"
|
msgid "Console"
|
||||||
msgstr "Console"
|
msgstr "Console"
|
||||||
|
|
||||||
#: console/views.py:26
|
#: console/views.py:27
|
||||||
msgid "iptables list"
|
msgid "iptables list"
|
||||||
msgstr "Lista de regras do iptables"
|
msgstr "Lista de regras do iptables"
|
||||||
|
|
||||||
#: console/views.py:32
|
#: console/views.py:33
|
||||||
msgid "running processes"
|
msgid "running processes"
|
||||||
msgstr "Processos em execução"
|
msgstr "Processos em execução"
|
||||||
|
|
||||||
#: console/views.py:35
|
#: console/views.py:36
|
||||||
msgid "WireGuard show"
|
msgid "WireGuard show"
|
||||||
msgstr "Estado do WireGuard"
|
msgstr "Estado do WireGuard"
|
||||||
|
|
||||||
#: console/views.py:38
|
#: console/views.py:39
|
||||||
msgid "Memory usage"
|
msgid "Memory usage"
|
||||||
msgstr "Uso de Memória"
|
msgstr "Uso de Memória"
|
||||||
|
|
||||||
#: console/views.py:41
|
#: console/views.py:42
|
||||||
msgid "Routing table"
|
msgid "Routing table"
|
||||||
msgstr "Tabela de Roteamento"
|
msgstr "Tabela de Roteamento"
|
||||||
|
|
||||||
#: console/views.py:53
|
#: console/views.py:54
|
||||||
msgid "DNS container test script"
|
msgid "DNS container test script"
|
||||||
msgstr "Script de teste do contêiner DNS"
|
msgstr "Script de teste do contêiner DNS"
|
||||||
|
|
||||||
#: console/views.py:56
|
#: console/views.py:57
|
||||||
msgid "Invalid command"
|
msgid "Invalid command"
|
||||||
msgstr "Comando inválido"
|
msgstr "Comando inválido"
|
||||||
|
|
||||||
#: console/views.py:63
|
#: console/views.py:64
|
||||||
msgid "Invalid target"
|
msgid "Invalid target"
|
||||||
msgstr "Destino inválido"
|
msgstr "Destino inválido"
|
||||||
|
|
||||||
#: console/views.py:68
|
#: console/views.py:69
|
||||||
msgid "Enhanced filter is enabled. This command is not available."
|
msgid "Enhanced filter is enabled. This command is not available."
|
||||||
msgstr "Filtro aprimorado está habilitado. Este comando não está disponível."
|
msgstr "Filtro aprimorado está habilitado. Este comando não está disponível."
|
||||||
|
|
||||||
|
@ -67,7 +67,8 @@ msgid "Secondary Resolver"
|
||||||
msgstr "Servidor Secundário"
|
msgstr "Servidor Secundário"
|
||||||
|
|
||||||
#: dns/forms.py:25 dns/forms.py:67 dns/forms.py:109
|
#: dns/forms.py:25 dns/forms.py:67 dns/forms.py:109
|
||||||
#: templates/wireguard/wireguard_peer_list.html:166
|
#: templates/wireguard/wireguard_peer_list.html:166 user_manager/forms.py:49
|
||||||
|
#: user_manager/forms.py:180
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
msgstr "Voltar"
|
msgstr "Voltar"
|
||||||
|
|
||||||
|
@ -75,7 +76,8 @@ msgstr "Voltar"
|
||||||
msgid "Resolver Settings"
|
msgid "Resolver Settings"
|
||||||
msgstr "Resolução de DNS"
|
msgstr "Resolução de DNS"
|
||||||
|
|
||||||
#: dns/forms.py:37 dns/forms.py:83 dns/forms.py:134
|
#: dns/forms.py:37 dns/forms.py:83 dns/forms.py:134 user_manager/forms.py:98
|
||||||
|
#: user_manager/forms.py:205
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr "Salvar"
|
msgstr "Salvar"
|
||||||
|
|
||||||
|
@ -89,7 +91,8 @@ msgid "IP Address"
|
||||||
msgstr "Endereço IP"
|
msgstr "Endereço IP"
|
||||||
|
|
||||||
#: dns/forms.py:68 dns/forms.py:110
|
#: dns/forms.py:68 dns/forms.py:110
|
||||||
#: templates/wireguard/wireguard_peer_list.html:185
|
#: templates/wireguard/wireguard_peer_list.html:185 user_manager/forms.py:48
|
||||||
|
#: user_manager/forms.py:181
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr "Excluir"
|
msgstr "Excluir"
|
||||||
|
|
||||||
|
@ -98,6 +101,7 @@ msgid "Static DNS"
|
||||||
msgstr "DNS Estático"
|
msgstr "DNS Estático"
|
||||||
|
|
||||||
#: dns/forms.py:111 templates/dns/static_host_list.html:68
|
#: dns/forms.py:111 templates/dns/static_host_list.html:68
|
||||||
|
#: templates/user_manager/peer_group_list.html:8 user_manager/forms.py:177
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Nome"
|
msgstr "Nome"
|
||||||
|
|
||||||
|
@ -223,11 +227,12 @@ msgstr ""
|
||||||
"Por favor, entre em contato com o administrador do sistema se você acredita "
|
"Por favor, entre em contato com o administrador do sistema se você acredita "
|
||||||
"que isto é um erro."
|
"que isto é um erro."
|
||||||
|
|
||||||
#: templates/accounts/login.html:14
|
#: templates/accounts/login.html:14 templates/user_manager/list.html:8
|
||||||
|
#: user_manager/forms.py:13
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr "Usuário"
|
msgstr "Usuário"
|
||||||
|
|
||||||
#: templates/accounts/login.html:23
|
#: templates/accounts/login.html:23 user_manager/forms.py:14
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr "Senha"
|
msgstr "Senha"
|
||||||
|
|
||||||
|
@ -247,7 +252,7 @@ msgstr "Acessar novamente"
|
||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr "Estado"
|
msgstr "Estado"
|
||||||
|
|
||||||
#: templates/base.html:158
|
#: templates/base.html:158 user_manager/views.py:74
|
||||||
msgid "User Manager"
|
msgid "User Manager"
|
||||||
msgstr "Configurar Usuários"
|
msgstr "Configurar Usuários"
|
||||||
|
|
||||||
|
@ -323,7 +328,8 @@ msgstr "Última Atualização"
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Atualizar"
|
msgstr "Atualizar"
|
||||||
|
|
||||||
#: templates/dns/static_host_list.html:74
|
#: templates/dns/static_host_list.html:74 templates/user_manager/list.html:53
|
||||||
|
#: templates/user_manager/peer_group_list.html:35
|
||||||
#: templates/wireguard/wireguard_peer_list.html:196
|
#: templates/wireguard/wireguard_peer_list.html:196
|
||||||
msgid "Edit"
|
msgid "Edit"
|
||||||
msgstr "Editar"
|
msgstr "Editar"
|
||||||
|
@ -332,6 +338,68 @@ msgstr "Editar"
|
||||||
msgid "Add Filter List"
|
msgid "Add Filter List"
|
||||||
msgstr "Adicionar Lista de Filtro"
|
msgstr "Adicionar Lista de Filtro"
|
||||||
|
|
||||||
|
#: templates/user_manager/list.html:9 user_manager/forms.py:20
|
||||||
|
msgid "User Level"
|
||||||
|
msgstr "Nível de Acesso"
|
||||||
|
|
||||||
|
#: templates/user_manager/list.html:10 user_manager/forms.py:24
|
||||||
|
#: user_manager/views.py:17
|
||||||
|
msgid "Peer Groups"
|
||||||
|
msgstr "Grupos de Peers"
|
||||||
|
|
||||||
|
#: templates/user_manager/list.html:11
|
||||||
|
msgid "Permissions"
|
||||||
|
msgstr "Permissões"
|
||||||
|
|
||||||
|
#: templates/user_manager/list.html:26
|
||||||
|
msgid "All"
|
||||||
|
msgstr "Todos"
|
||||||
|
|
||||||
|
#: templates/user_manager/list.html:31
|
||||||
|
msgid "Restart Enabled"
|
||||||
|
msgstr "Reiniciar Habilitado"
|
||||||
|
|
||||||
|
#: templates/user_manager/list.html:36
|
||||||
|
msgid "Reload Enabled"
|
||||||
|
msgstr "Recarregar Habilitado"
|
||||||
|
|
||||||
|
#: templates/user_manager/list.html:42
|
||||||
|
msgid "Console Enabled"
|
||||||
|
msgstr "Console Habilitado"
|
||||||
|
|
||||||
|
#: templates/user_manager/list.html:48
|
||||||
|
msgid "Enhanced Filter Enabled"
|
||||||
|
msgstr "Filtro Aprimorado Habilitado"
|
||||||
|
|
||||||
|
#: templates/user_manager/list_buttons.html:2 user_manager/views.py:111
|
||||||
|
msgid "Add User"
|
||||||
|
msgstr "Adicionar Usuário"
|
||||||
|
|
||||||
|
#: templates/user_manager/list_buttons.html:3
|
||||||
|
msgid "List Users"
|
||||||
|
msgstr "Lista de Usuários"
|
||||||
|
|
||||||
|
#: templates/user_manager/list_buttons.html:4
|
||||||
|
msgid "List Peer Groups"
|
||||||
|
msgstr "Lista de Grupos de Peers"
|
||||||
|
|
||||||
|
#: templates/user_manager/list_buttons.html:5 user_manager/views.py:43
|
||||||
|
msgid "Add Peer Group"
|
||||||
|
msgstr "Adicionar Grupo de Peers"
|
||||||
|
|
||||||
|
#: templates/user_manager/peer_group_list.html:9
|
||||||
|
#: templates/wireguard/wireguard_status.html:48
|
||||||
|
msgid "Peers"
|
||||||
|
msgstr "Peers"
|
||||||
|
|
||||||
|
#: templates/user_manager/peer_group_list.html:10 user_manager/forms.py:179
|
||||||
|
msgid "Server Instance"
|
||||||
|
msgstr "Instância do WireGuard"
|
||||||
|
|
||||||
|
#: templates/user_manager/peer_group_list.html:11
|
||||||
|
msgid "Users"
|
||||||
|
msgstr "Usuários"
|
||||||
|
|
||||||
#: templates/wireguard/wireguard_peer_list.html:75
|
#: templates/wireguard/wireguard_peer_list.html:75
|
||||||
#: templates/wireguard/wireguard_peer_list.html:125
|
#: templates/wireguard/wireguard_peer_list.html:125
|
||||||
msgid "Throughput"
|
msgid "Throughput"
|
||||||
|
@ -543,9 +611,213 @@ msgstr "Endereço Público"
|
||||||
msgid "Port"
|
msgid "Port"
|
||||||
msgstr "Porta"
|
msgstr "Porta"
|
||||||
|
|
||||||
#: templates/wireguard/wireguard_status.html:48
|
#: user_manager/forms.py:15
|
||||||
msgid "Peers"
|
msgid "Password Confirmation"
|
||||||
msgstr "Peers"
|
msgstr "Confirmação de Senha"
|
||||||
|
|
||||||
|
#: user_manager/forms.py:17
|
||||||
|
msgid "Reload WireGuard"
|
||||||
|
msgstr "Recarregar o WireGuard"
|
||||||
|
|
||||||
|
#: user_manager/forms.py:18
|
||||||
|
msgid "Restart WireGuard"
|
||||||
|
msgstr "Reiniciar o WireGuard"
|
||||||
|
|
||||||
|
#: user_manager/forms.py:19
|
||||||
|
msgid "Enhanced Filter"
|
||||||
|
msgstr "Filtro Aprimorado"
|
||||||
|
|
||||||
|
#: user_manager/forms.py:119
|
||||||
|
msgid "Password is required for new users."
|
||||||
|
msgstr "Senha é obrigatória para novos usuários."
|
||||||
|
|
||||||
|
#: user_manager/forms.py:121
|
||||||
|
msgid "Password confirmation is required for new users."
|
||||||
|
msgstr "Confirmação de senha é obrigatória para novos usuários."
|
||||||
|
|
||||||
|
#: user_manager/forms.py:125
|
||||||
|
msgid "The two password fields didn't match."
|
||||||
|
msgstr "As duas senhas não coincidem."
|
||||||
|
|
||||||
|
#: user_manager/forms.py:127
|
||||||
|
msgid "Password must be at least 8 characters long."
|
||||||
|
msgstr "Senha deve ter pelo menos 8 caracteres."
|
||||||
|
|
||||||
|
#: user_manager/forms.py:178
|
||||||
|
msgid "Peer"
|
||||||
|
msgstr "Peer"
|
||||||
|
|
||||||
|
#: user_manager/forms.py:220
|
||||||
|
msgid "A peer group with that name already exists."
|
||||||
|
msgstr "Um grupo de peers com esse nome já existe."
|
||||||
|
|
||||||
|
#: user_manager/models.py:13
|
||||||
|
msgid "Debugging Analyst"
|
||||||
|
msgstr "Analista de Debug"
|
||||||
|
|
||||||
|
#: user_manager/models.py:14
|
||||||
|
msgid "View Only"
|
||||||
|
msgstr "Somente Visualização"
|
||||||
|
|
||||||
|
#: user_manager/models.py:15
|
||||||
|
msgid "Peer Manager"
|
||||||
|
msgstr "Gerente de Peers"
|
||||||
|
|
||||||
|
#: user_manager/models.py:16
|
||||||
|
msgid "WireGuard Manager"
|
||||||
|
msgstr "Gerente do WireGuard"
|
||||||
|
|
||||||
|
#: user_manager/models.py:17
|
||||||
|
msgid "Administrator"
|
||||||
|
msgstr "Administrador"
|
||||||
|
|
||||||
|
#: user_manager/views.py:31
|
||||||
|
msgid "Edit Peer Group: "
|
||||||
|
msgstr "Editar Grupo de Peers: "
|
||||||
|
|
||||||
|
#: user_manager/views.py:36
|
||||||
|
msgid "Peer Group deleted|Peer Group deleted: "
|
||||||
|
msgstr "Grupo de Peers excluído|Grupo de Peers excluído: "
|
||||||
|
|
||||||
|
#: user_manager/views.py:39
|
||||||
|
msgid "Peer Group not deleted|Invalid confirmation."
|
||||||
|
msgstr "Grupo de Peers não excluído|Confirmação inválida."
|
||||||
|
|
||||||
|
#: user_manager/views.py:58
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" <h5>Peers</h5>\n"
|
||||||
|
" <p>Select which peers can be managed by users with this peer group.</"
|
||||||
|
"p>\n"
|
||||||
|
"\n"
|
||||||
|
" <h5>WireGuard Instances</h5>\n"
|
||||||
|
" <p>All peers in this WireGuard instance can be managed by users with "
|
||||||
|
"this peer group, including adding or removing peers.</p>\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" <h5>Peers</h5>\n"
|
||||||
|
" <p>Selecione quais peers podem ser gerenciados por usuários com este "
|
||||||
|
"grupo de peers.</p>\n"
|
||||||
|
"\n"
|
||||||
|
" <h5>Instâncias do WireGuard</h5>\n"
|
||||||
|
" <p>Todos os peers nesta instância do WireGuard podem ser gerenciados "
|
||||||
|
"por usuários com este grupo de peers, incluindo a adição ou remoção de peers."
|
||||||
|
"</p>\n"
|
||||||
|
" "
|
||||||
|
|
||||||
|
#: user_manager/views.py:98
|
||||||
|
msgid "Edit User"
|
||||||
|
msgstr "Editar Usuário"
|
||||||
|
|
||||||
|
#: user_manager/views.py:104
|
||||||
|
msgid "User deleted|User deleted: "
|
||||||
|
msgstr "Usuário excluído|Usuário excluído: "
|
||||||
|
|
||||||
|
#: user_manager/views.py:107
|
||||||
|
msgid "User not deleted|Invalid confirmation."
|
||||||
|
msgstr "Usuário não foi excluído|Confirmação inválida."
|
||||||
|
|
||||||
|
#: user_manager/views.py:128
|
||||||
|
msgid "User Disconnected|User Disconnected: "
|
||||||
|
msgstr "Usuário Desconectado|Usuário Desconectado: "
|
||||||
|
|
||||||
|
#: user_manager/views.py:132
|
||||||
|
msgid "User updated|User updated: "
|
||||||
|
msgstr "Usuário atualizado|Usuário atualizado: "
|
||||||
|
|
||||||
|
#: user_manager/views.py:134
|
||||||
|
msgid "User created|User created: "
|
||||||
|
msgstr "Usuário criado|Usuário criado: "
|
||||||
|
|
||||||
|
#: user_manager/views.py:139
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" <h4>User Levels</h4>\n"
|
||||||
|
" <h5>Debugging Analyst</h5>\n"
|
||||||
|
" <p>Access to basic system information and logs for troubleshooting. "
|
||||||
|
"No access to modify settings or view sensitive data such as peer keys.</p>\n"
|
||||||
|
"\n"
|
||||||
|
" <h5>View Only</h5>\n"
|
||||||
|
" <p>Full view access, including peer keys and configuration files. "
|
||||||
|
"Cannot modify any settings or configurations.</p>\n"
|
||||||
|
"\n"
|
||||||
|
" <h5>Peer Manager</h5>\n"
|
||||||
|
" <p>Permissions to add, edit, and remove peers and IP addresses. Does "
|
||||||
|
"not include access to modify WireGuard instance configurations or higher-"
|
||||||
|
"level settings.</p>\n"
|
||||||
|
"\n"
|
||||||
|
" <h5>Wireguard Manager</h5>\n"
|
||||||
|
" <p>Authority to add, edit, and remove configurations of WireGuard "
|
||||||
|
"instances.</p>\n"
|
||||||
|
"\n"
|
||||||
|
" <h5>Administrator</h5>\n"
|
||||||
|
" <p>Full access across the system. Can view and modify all settings, "
|
||||||
|
"configurations and manage users. </p>\n"
|
||||||
|
"\n"
|
||||||
|
" <br>\n"
|
||||||
|
" <h4>Peer Groups</h4>\n"
|
||||||
|
" <p>Select which peer groups this user can access. If no peer groups "
|
||||||
|
"are selected, the user will have access to all peers.</p>\n"
|
||||||
|
"\n"
|
||||||
|
" <h4>Console</h4>\n"
|
||||||
|
" <p>Enable or disable web console access for this user.</p>\n"
|
||||||
|
"\n"
|
||||||
|
" <h4>Enhanced Filter</h4>\n"
|
||||||
|
" <p>This option filters the API status response to include only peers "
|
||||||
|
"that the user has access to. Depending on the size of your environment, "
|
||||||
|
"enabling this option may impact performance. To mitigate this, consider "
|
||||||
|
"increasing the \"Web Refresh Interval\" to reduce the number of requests.</"
|
||||||
|
"p>\n"
|
||||||
|
"\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" <h4>Níveis de Usuário</h4>\n"
|
||||||
|
" <h5>Analista de Debug</h5>\n"
|
||||||
|
" <p>Acesso a informações básicas do sistema e logs para solução de "
|
||||||
|
"problemas. Sem acesso para modificar configurações ou visualizar dados "
|
||||||
|
"sensíveis, como chaves de peer.</p>\n"
|
||||||
|
"\n"
|
||||||
|
" <h5>Somente Visualização</h5>\n"
|
||||||
|
" <p>Acesso total de visualização, incluindo chaves de peer e arquivos "
|
||||||
|
"de configuração. Não pode modificar nenhuma configuração ou ajuste.</p>\n"
|
||||||
|
"\n"
|
||||||
|
" <h5>Gerente de Peers</h5>\n"
|
||||||
|
" <p>Permissões para adicionar, editar e remover peers e endereços IP. "
|
||||||
|
"Não inclui acesso para modificar configurações de instâncias do WireGuard ou "
|
||||||
|
"configurações de nível superior.</p>\n"
|
||||||
|
"\n"
|
||||||
|
" <h5>Gerente do WireGuard</h5>\n"
|
||||||
|
" <p>Autoridade para adicionar, editar e remover configurações de "
|
||||||
|
"instâncias do WireGuard.</p>\n"
|
||||||
|
"\n"
|
||||||
|
" <h5>Administrador</h5>\n"
|
||||||
|
" <p>Acesso total ao sistema. Pode visualizar e modificar todas as "
|
||||||
|
"configurações, ajustes e gerenciar usuários.</p>\n"
|
||||||
|
"\n"
|
||||||
|
" <br>\n"
|
||||||
|
" <h4>Grupos de Peers</h4>\n"
|
||||||
|
" <p>Selecione quais grupos de peers este usuário pode acessar. Se "
|
||||||
|
"nenhum grupo de peers for selecionado, o usuário terá acesso a todos os "
|
||||||
|
"peers.</p>\n"
|
||||||
|
"\n"
|
||||||
|
" <h4>Console</h4>\n"
|
||||||
|
" <p>Ativar ou desativar o acesso ao console web para este usuário.</"
|
||||||
|
"p>\n"
|
||||||
|
"\n"
|
||||||
|
" <h4>Filtro Aprimorado</h4>\n"
|
||||||
|
" <p>Esta opção filtra a resposta do status da API para incluir apenas "
|
||||||
|
"os peers aos quais o usuário tem acesso. Dependendo do tamanho do seu "
|
||||||
|
"ambiente, ativar esta opção pode impactar o desempenho. Para mitigar isso, "
|
||||||
|
"considere aumentar o \"Intervalo de Atualização da Web\" para reduzir o "
|
||||||
|
"número de requisições.</p>\n"
|
||||||
|
"\n"
|
||||||
|
" "
|
||||||
|
|
||||||
|
#: user_manager/views.py:175
|
||||||
|
msgid "Please type the username to proceed."
|
||||||
|
msgstr "Por favor, digite o nome de usuário para prosseguir."
|
||||||
|
|
||||||
#: wireguard/views.py:96
|
#: wireguard/views.py:96
|
||||||
msgid "WireGuard Status"
|
msgid "WireGuard Status"
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<table class="table table-striped table-bordered">
|
<table class="table table-striped table-bordered">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Username</th>
|
<th>{% trans 'Username' %}</th>
|
||||||
<th>User Level</th>
|
<th>{% trans 'User Level' %}</th>
|
||||||
<th>Peer Groups</th>
|
<th>{% trans 'Peer Groups' %}</th>
|
||||||
<th colspan="4">Permissions</th>
|
<th colspan="4">{% trans 'Permissions' %}</th>
|
||||||
<th><i class="far fa-edit"></i></th>
|
<th><i class="far fa-edit"></i></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
@ -22,34 +23,34 @@
|
||||||
<a href="/user/peer-group/manage/?uuid={{ peer_group.uuid }}">{{ peer_group.name }}</a>{% if not forloop.last %}, {% endif %}
|
<a href="/user/peer-group/manage/?uuid={{ peer_group.uuid }}">{{ peer_group.name }}</a>{% if not forloop.last %}, {% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% else %}
|
{% else %}
|
||||||
Any
|
{% trans 'All' %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
<td style="width: 1%; white-space: nowrap;">
|
<td style="width: 1%; white-space: nowrap;">
|
||||||
{% if user_acl.enable_restart %}
|
{% if user_acl.enable_restart %}
|
||||||
<i class="fas fa-power-off" title="Restart Enabled"></i>
|
<i class="fas fa-power-off" title="{% trans 'Restart Enabled' %}"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
<td style="width: 1%; white-space: nowrap;">
|
<td style="width: 1%; white-space: nowrap;">
|
||||||
{% if user_acl.enable_reload %}
|
{% if user_acl.enable_reload %}
|
||||||
<i class="fas fa-sync-alt" title="Reload Enabled"></i>
|
<i class="fas fa-sync-alt" title="{% trans 'Reload Enabled' %}"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
<td style="width: 1%; white-space: nowrap;">
|
<td style="width: 1%; white-space: nowrap;">
|
||||||
{% if user_acl.enable_console %}
|
{% if user_acl.enable_console %}
|
||||||
<i class="fas fa-terminal" title="Console Enabled"></i>
|
<i class="fas fa-terminal" title="{% trans 'Console Enabled' %}"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
<td style="width: 1%; white-space: nowrap;">
|
<td style="width: 1%; white-space: nowrap;">
|
||||||
{% if user_acl.enable_enhanced_filter %}
|
{% if user_acl.enable_enhanced_filter %}
|
||||||
<i class="fas fa-eye-slash" title="Enhanced Filter Enabled"></i>
|
<i class="fas fa-eye-slash" title="{% trans 'Enhanced Filter Enabled' %}"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
<td style="width: 1%; white-space: nowrap;">
|
<td style="width: 1%; white-space: nowrap;">
|
||||||
<a href="/user/manage/?uuid={{ user_acl.uuid }}" ><i class="far fa-edit"></i></a>
|
<a href="/user/manage/?uuid={{ user_acl.uuid }}" title="{% trans 'Edit' %}"><i class="far fa-edit"></i></a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<a href="/user/manage/" class="btn btn-primary">Add User</a>
|
{% load i18n %}
|
||||||
<a href="/user/list/" class="btn {% if request.path == '/user/list/' %}btn-outline-primary{% else %}btn-primary{% endif %}">List Users</a>
|
<a href="/user/manage/" class="btn btn-primary">{% trans 'Add User' %}</a>
|
||||||
<a href="/user/peer-group/list/" class="btn {% if request.path == '/user/peer-group/list/' %}btn-outline-primary{% else %}btn-primary{% endif %}">List Peer Groups</a>
|
<a href="/user/list/" class="btn {% if request.path == '/user/list/' %}btn-outline-primary{% else %}btn-primary{% endif %}">{% trans 'List Users' %}</a>
|
||||||
<a href="/user/peer-group/manage/" class="btn btn-primary">Add Peer Group</a>
|
<a href="/user/peer-group/list/" class="btn {% if request.path == '/user/peer-group/list/' %}btn-outline-primary{% else %}btn-primary{% endif %}">{% trans 'List Peer Groups' %}</a>
|
||||||
|
<a href="/user/peer-group/manage/" class="btn btn-primary">{% trans 'Add Peer Group' %}</a>
|
|
@ -1,13 +1,14 @@
|
||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<table class="table table-striped">
|
<table class="table table-striped">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Name</th>
|
<th>{% trans 'Name' %}</th>
|
||||||
<th>Peers</th>
|
<th>{% trans 'Peers' %}</th>
|
||||||
<th>Server Instance</th>
|
<th>{% trans 'Server Instance' %}</th>
|
||||||
<th>Users</th>
|
<th>{% trans 'Users' %}</th>
|
||||||
<th></th>
|
<th></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
@ -31,7 +32,7 @@
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</td>
|
</td>
|
||||||
<td style="width: 1%; white-space: nowrap;">
|
<td style="width: 1%; white-space: nowrap;">
|
||||||
<a href="/user/peer-group/manage/?uuid={{ peer_group.uuid }}" ><i class="far fa-edit"></i></a>
|
<a href="/user/peer-group/manage/?uuid={{ peer_group.uuid }}" title="{% trans 'Edit' %}"><i class="far fa-edit"></i></a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -3,23 +3,25 @@ from crispy_forms.layout import Column, HTML, Layout, Row, Submit
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from wireguard.models import PeerGroup
|
from wireguard.models import PeerGroup
|
||||||
from .models import UserAcl
|
from .models import UserAcl
|
||||||
|
|
||||||
|
|
||||||
class UserAclForm(forms.Form):
|
class UserAclForm(forms.Form):
|
||||||
username = forms.CharField(max_length=150)
|
username = forms.CharField(max_length=150, label=_("Username"))
|
||||||
password1 = forms.CharField(widget=forms.PasswordInput, required=False, label="Password")
|
password1 = forms.CharField(widget=forms.PasswordInput, required=False, label=_("Password"))
|
||||||
password2 = forms.CharField(widget=forms.PasswordInput, required=False, label="Password confirmation")
|
password2 = forms.CharField(widget=forms.PasswordInput, required=False, label=_("Password Confirmation"))
|
||||||
enable_console = forms.BooleanField(required=False, label="Enable Console")
|
enable_console = forms.BooleanField(required=False, label=_("Console"))
|
||||||
enable_reload = forms.BooleanField(required=False, label="Enable Reload")
|
enable_reload = forms.BooleanField(required=False, label=_("Reload WireGuard"))
|
||||||
enable_restart = forms.BooleanField(required=False, label="Enable Restart")
|
enable_restart = forms.BooleanField(required=False, label=_("Restart WireGuard"))
|
||||||
enable_enhanced_filter = forms.BooleanField(required=False, label="Enable Enhanced Filter")
|
enable_enhanced_filter = forms.BooleanField(required=False, label=_("Enhanced Filter"))
|
||||||
user_level = forms.ChoiceField(choices=UserAcl.user_level.field.choices, required=True, label="User Level")
|
user_level = forms.ChoiceField(choices=UserAcl.user_level.field.choices, required=True, label=_("User Level"))
|
||||||
peer_groups = forms.ModelMultipleChoiceField(
|
peer_groups = forms.ModelMultipleChoiceField(
|
||||||
queryset=PeerGroup.objects.all(),
|
queryset=PeerGroup.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
|
label=_("Peer Groups"),
|
||||||
)
|
)
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
|
@ -43,16 +45,14 @@ class UserAclForm(forms.Form):
|
||||||
self.fields['enable_restart'].initial = True
|
self.fields['enable_restart'].initial = True
|
||||||
self.fields['enable_enhanced_filter'].initial = False
|
self.fields['enable_enhanced_filter'].initial = False
|
||||||
|
|
||||||
self.fields['enable_console'].label = "Console"
|
delete_label = _("Delete")
|
||||||
self.fields['enable_reload'].label = "Reload"
|
back_label = _("Back")
|
||||||
self.fields['enable_restart'].label = "Restart"
|
|
||||||
self.fields['enable_enhanced_filter'].label = "Enhanced Filter"
|
|
||||||
|
|
||||||
self.helper = FormHelper()
|
self.helper = FormHelper()
|
||||||
self.helper.form_method = 'post'
|
self.helper.form_method = 'post'
|
||||||
|
|
||||||
if self.instance:
|
if self.instance:
|
||||||
delete_html = "<a href='javascript:void(0)' class='btn btn-outline-danger' data-command='delete' onclick='openCommandDialog(this)'>Delete</a>"
|
delete_html = f"<a href='javascript:void(0)' class='btn btn-outline-danger' data-command='delete' onclick='openCommandDialog(this)'>{delete_label}</a>"
|
||||||
else:
|
else:
|
||||||
delete_html = ''
|
delete_html = ''
|
||||||
|
|
||||||
|
@ -95,8 +95,8 @@ class UserAclForm(forms.Form):
|
||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
Column(
|
Column(
|
||||||
Submit('submit', 'Save', css_class='btn btn-success'),
|
Submit('submit', _('Save'), css_class='btn btn-success'),
|
||||||
HTML(' <a class="btn btn-secondary" href="/user/list/">Back</a> '),
|
HTML(f' <a class="btn btn-secondary" href="/user/list/">{back_label}</a> '),
|
||||||
HTML(delete_html),
|
HTML(delete_html),
|
||||||
css_class='col-md-12'),
|
css_class='col-md-12'),
|
||||||
css_class='form-row'
|
css_class='form-row'
|
||||||
|
@ -116,15 +116,15 @@ class UserAclForm(forms.Form):
|
||||||
|
|
||||||
if not self.instance:
|
if not self.instance:
|
||||||
if not password1:
|
if not password1:
|
||||||
raise ValidationError("Password is required for new users.")
|
raise ValidationError(_("Password is required for new users."))
|
||||||
if not password2:
|
if not password2:
|
||||||
raise ValidationError("Password confirmation is required for new users.")
|
raise ValidationError(_("Password confirmation is required for new users."))
|
||||||
|
|
||||||
if password1 or password2:
|
if password1 or password2:
|
||||||
if password1 != password2:
|
if password1 != password2:
|
||||||
raise ValidationError("The two password fields didn't match.")
|
raise ValidationError(_("The two password fields didn't match."))
|
||||||
if len(password1) < 8:
|
if len(password1) < 8:
|
||||||
raise ValidationError("Password must be at least 8 characters long.")
|
raise ValidationError(_("Password must be at least 8 characters long."))
|
||||||
|
|
||||||
return cleaned_data
|
return cleaned_data
|
||||||
|
|
||||||
|
@ -174,11 +174,16 @@ class PeerGroupForm(forms.ModelForm):
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
self.user_id = kwargs.pop('user_id', None)
|
self.user_id = kwargs.pop('user_id', None)
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
|
self.fields['name'].label = _("Name")
|
||||||
|
self.fields['peer'].label = _("Peer")
|
||||||
|
self.fields['server_instance'].label = _("Server Instance")
|
||||||
|
back_label = _("Back")
|
||||||
|
delete_label = _("Delete")
|
||||||
self.helper = FormHelper()
|
self.helper = FormHelper()
|
||||||
self.helper.form_method = 'post'
|
self.helper.form_method = 'post'
|
||||||
|
|
||||||
if self.instance.pk:
|
if self.instance.pk:
|
||||||
delete_html = "<a href='javascript:void(0)' class='btn btn-outline-danger' data-command='delete' onclick='openCommandDialog(this)'>Delete</a>"
|
delete_html = f"<a href='javascript:void(0)' class='btn btn-outline-danger' data-command='delete' onclick='openCommandDialog(this)'>{delete_label}</a>"
|
||||||
else:
|
else:
|
||||||
delete_html = ''
|
delete_html = ''
|
||||||
|
|
||||||
|
@ -197,8 +202,8 @@ class PeerGroupForm(forms.ModelForm):
|
||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
Column(
|
Column(
|
||||||
Submit('submit', 'Save', css_class='btn btn-success'),
|
Submit('submit', _('Save'), css_class='btn btn-success'),
|
||||||
HTML(' <a class="btn btn-secondary" href="/user/peer-group/list/">Back</a> '),
|
HTML(f' <a class="btn btn-secondary" href="/user/peer-group/list/">{back_label}</a> '),
|
||||||
HTML(delete_html),
|
HTML(delete_html),
|
||||||
css_class='col-md-12'),
|
css_class='col-md-12'),
|
||||||
css_class='form-row'
|
css_class='form-row'
|
||||||
|
@ -212,7 +217,7 @@ class PeerGroupForm(forms.ModelForm):
|
||||||
server_instances = cleaned_data.get('server_instance')
|
server_instances = cleaned_data.get('server_instance')
|
||||||
|
|
||||||
if PeerGroup.objects.filter(name=name).exclude(pk=self.instance.pk if self.instance else None).exists():
|
if PeerGroup.objects.filter(name=name).exclude(pk=self.instance.pk if self.instance else None).exists():
|
||||||
raise ValidationError("A peer group with that name already exists.")
|
raise ValidationError(_("A peer group with that name already exists."))
|
||||||
|
|
||||||
return cleaned_data
|
return cleaned_data
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@ import uuid
|
||||||
|
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from wireguard.models import PeerGroup
|
from wireguard.models import PeerGroup
|
||||||
|
|
||||||
|
@ -9,11 +10,11 @@ from wireguard.models import PeerGroup
|
||||||
class UserAcl(models.Model):
|
class UserAcl(models.Model):
|
||||||
user = models.OneToOneField(User, on_delete=models.CASCADE)
|
user = models.OneToOneField(User, on_delete=models.CASCADE)
|
||||||
user_level = models.PositiveIntegerField(default=0, choices=(
|
user_level = models.PositiveIntegerField(default=0, choices=(
|
||||||
(10, 'Debugging Analyst'),
|
(10, _('Debugging Analyst')),
|
||||||
(20, 'View Only User'),
|
(20, _('View Only')),
|
||||||
(30, 'Peer Manager'),
|
(30, _('Peer Manager')),
|
||||||
(40, 'Wireguard Manager'),
|
(40, _('WireGuard Manager')),
|
||||||
(50, 'Administrator'),
|
(50, _('Administrator')),
|
||||||
))
|
))
|
||||||
peer_groups = models.ManyToManyField(PeerGroup, blank=True)
|
peer_groups = models.ManyToManyField(PeerGroup, blank=True)
|
||||||
enable_console = models.BooleanField(default=True)
|
enable_console = models.BooleanField(default=True)
|
||||||
|
|
|
@ -1,19 +1,20 @@
|
||||||
from django.contrib.auth.decorators import login_required
|
|
||||||
from django.shortcuts import render, redirect, get_object_or_404
|
|
||||||
from user_manager.models import UserAcl
|
|
||||||
from .forms import UserAclForm
|
|
||||||
from django.contrib.auth.models import User
|
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
|
from django.contrib.auth.decorators import login_required
|
||||||
from django.contrib.sessions.models import Session
|
from django.contrib.sessions.models import Session
|
||||||
|
from django.shortcuts import get_object_or_404, redirect, render
|
||||||
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
from user_manager.models import UserAcl
|
||||||
from wireguard.models import PeerGroup
|
from wireguard.models import PeerGroup
|
||||||
from .forms import PeerGroupForm
|
from .forms import PeerGroupForm
|
||||||
|
from .forms import UserAclForm
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def view_peer_group_list(request):
|
def view_peer_group_list(request):
|
||||||
if not UserAcl.objects.filter(user=request.user).filter(user_level__gte=50).exists():
|
if not UserAcl.objects.filter(user=request.user).filter(user_level__gte=50).exists():
|
||||||
return render(request, 'access_denied.html', {'page_title': 'Access Denied'})
|
return render(request, 'access_denied.html', {'page_title': 'Access Denied'})
|
||||||
page_title = 'Peer Group Manager'
|
page_title = _('Peer Groups')
|
||||||
peer_group_list = PeerGroup.objects.all().order_by('name')
|
peer_group_list = PeerGroup.objects.all().order_by('name')
|
||||||
context = {'page_title': page_title, 'peer_group_list': peer_group_list}
|
context = {'page_title': page_title, 'peer_group_list': peer_group_list}
|
||||||
return render(request, 'user_manager/peer_group_list.html', context)
|
return render(request, 'user_manager/peer_group_list.html', context)
|
||||||
|
@ -27,19 +28,19 @@ def view_peer_group_manage(request):
|
||||||
if 'uuid' in request.GET:
|
if 'uuid' in request.GET:
|
||||||
peer_group = get_object_or_404(PeerGroup, uuid=request.GET['uuid'])
|
peer_group = get_object_or_404(PeerGroup, uuid=request.GET['uuid'])
|
||||||
form = PeerGroupForm(instance=peer_group, user_id=request.user.id)
|
form = PeerGroupForm(instance=peer_group, user_id=request.user.id)
|
||||||
page_title = 'Edit Peer Group ' + peer_group.name
|
page_title = _('Edit Peer Group: ') + peer_group.name
|
||||||
if request.GET.get('action') == 'delete':
|
if request.GET.get('action') == 'delete':
|
||||||
group_name = peer_group.name
|
group_name = peer_group.name
|
||||||
if request.GET.get('confirmation') == 'delete':
|
if request.GET.get('confirmation') == 'delete':
|
||||||
peer_group.delete()
|
peer_group.delete()
|
||||||
messages.success(request, 'Peer Group deleted|The peer group ' + group_name + ' has been deleted.')
|
messages.success(request, _('Peer Group deleted|Peer Group deleted: ') + group_name)
|
||||||
return redirect('/user/peer-group/list/')
|
return redirect('/user/peer-group/list/')
|
||||||
else:
|
else:
|
||||||
messages.warning(request, 'Peer Group not deleted|Invalid confirmation.')
|
messages.warning(request, _('Peer Group not deleted|Invalid confirmation.'))
|
||||||
return redirect('/user/peer-group/list/')
|
return redirect('/user/peer-group/list/')
|
||||||
else:
|
else:
|
||||||
form = PeerGroupForm(user_id=request.user.id)
|
form = PeerGroupForm(user_id=request.user.id)
|
||||||
page_title = 'Add Peer Group'
|
page_title = _('Add Peer Group')
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
if peer_group:
|
if peer_group:
|
||||||
|
@ -54,13 +55,13 @@ def view_peer_group_manage(request):
|
||||||
|
|
||||||
form_description = {
|
form_description = {
|
||||||
'size': '',
|
'size': '',
|
||||||
'content': '''
|
'content': _('''
|
||||||
<h5>Peers</h5>
|
<h5>Peers</h5>
|
||||||
<p>Select which peers can be managed by users with this peer group.</p>
|
<p>Select which peers can be managed by users with this peer group.</p>
|
||||||
|
|
||||||
<h5>WireGuard Instances</h5>
|
<h5>WireGuard Instances</h5>
|
||||||
<p>All peers in this WireGuard instance can be managed by users with this peer group, including adding or removing peers.</p>
|
<p>All peers in this WireGuard instance can be managed by users with this peer group, including adding or removing peers.</p>
|
||||||
'''
|
''')
|
||||||
}
|
}
|
||||||
context = {'page_title': page_title, 'form': form, 'peer_group': peer_group, 'instance': peer_group, 'form_description': form_description}
|
context = {'page_title': page_title, 'form': form, 'peer_group': peer_group, 'instance': peer_group, 'form_description': form_description}
|
||||||
return render(request, 'generic_form.html', context)
|
return render(request, 'generic_form.html', context)
|
||||||
|
@ -70,7 +71,7 @@ def view_peer_group_manage(request):
|
||||||
def view_user_list(request):
|
def view_user_list(request):
|
||||||
if not UserAcl.objects.filter(user=request.user).filter(user_level__gte=50).exists():
|
if not UserAcl.objects.filter(user=request.user).filter(user_level__gte=50).exists():
|
||||||
return render(request, 'access_denied.html', {'page_title': 'Access Denied'})
|
return render(request, 'access_denied.html', {'page_title': 'Access Denied'})
|
||||||
page_title = 'User Manager'
|
page_title = _('User Manager')
|
||||||
user_acl_list = UserAcl.objects.all().order_by('user__username')
|
user_acl_list = UserAcl.objects.all().order_by('user__username')
|
||||||
context = {'page_title': page_title, 'user_acl_list': user_acl_list}
|
context = {'page_title': page_title, 'user_acl_list': user_acl_list}
|
||||||
return render(request, 'user_manager/list.html', context)
|
return render(request, 'user_manager/list.html', context)
|
||||||
|
@ -94,20 +95,20 @@ def view_manage_user(request):
|
||||||
'peer_groups': user_acl.peer_groups.all()
|
'peer_groups': user_acl.peer_groups.all()
|
||||||
}
|
}
|
||||||
form = UserAclForm(initial=initial_data, instance=user, user_id=user.id)
|
form = UserAclForm(initial=initial_data, instance=user, user_id=user.id)
|
||||||
page_title = 'Edit User '+ user.username
|
page_title = _('Edit User') + f' {user.username}'
|
||||||
|
|
||||||
if request.GET.get('action') == 'delete':
|
if request.GET.get('action') == 'delete':
|
||||||
username = user.username
|
username = user.username
|
||||||
if request.GET.get('confirmation') == username:
|
if request.GET.get('confirmation') == username:
|
||||||
user.delete()
|
user.delete()
|
||||||
messages.success(request, 'User deleted|The user '+ username +' has been deleted.')
|
messages.success(request, _('User deleted|User deleted: ') + username)
|
||||||
return redirect('/user/list/')
|
return redirect('/user/list/')
|
||||||
else:
|
else:
|
||||||
messages.warning(request, 'User not deleted|Invalid confirmation.')
|
messages.warning(request, _('User not deleted|Invalid confirmation.'))
|
||||||
return redirect('/user/list/')
|
return redirect('/user/list/')
|
||||||
else:
|
else:
|
||||||
form = UserAclForm()
|
form = UserAclForm()
|
||||||
page_title = 'Add User'
|
page_title = _('Add User')
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
if user:
|
if user:
|
||||||
|
@ -124,23 +125,23 @@ def view_manage_user(request):
|
||||||
if str(user.id) == session.get_decoded().get('_auth_user_id'):
|
if str(user.id) == session.get_decoded().get('_auth_user_id'):
|
||||||
session.delete()
|
session.delete()
|
||||||
if not user_disconnected:
|
if not user_disconnected:
|
||||||
messages.warning(request, 'User Disconnected|The user '+ user.username +' has been disconnected.')
|
messages.warning(request, _('User Disconnected|User Disconnected: ') + user.username)
|
||||||
user_disconnected = True
|
user_disconnected = True
|
||||||
|
|
||||||
if user:
|
if user:
|
||||||
messages.success(request, 'User updated|The user '+ form.cleaned_data['username'] +' has been updated.')
|
messages.success(request, _('User updated|User updated: ') + form.cleaned_data['username'])
|
||||||
else:
|
else:
|
||||||
messages.success(request, 'User added|The user '+ form.cleaned_data['username'] +' has been added.')
|
messages.success(request, _('User created|User created: ') + form.cleaned_data['username'])
|
||||||
return redirect('/user/list/')
|
return redirect('/user/list/')
|
||||||
|
|
||||||
form_description = {
|
form_description = {
|
||||||
'size': '',
|
'size': '',
|
||||||
'content': '''
|
'content': _('''
|
||||||
<h4>User Levels</h4>
|
<h4>User Levels</h4>
|
||||||
<h5>Debugging Analyst</h5>
|
<h5>Debugging Analyst</h5>
|
||||||
<p>Access to basic system information and logs for troubleshooting. No access to modify settings or view sensitive data such as peer keys.</p>
|
<p>Access to basic system information and logs for troubleshooting. No access to modify settings or view sensitive data such as peer keys.</p>
|
||||||
|
|
||||||
<h5>View Only User</h5>
|
<h5>View Only</h5>
|
||||||
<p>Full view access, including peer keys and configuration files. Cannot modify any settings or configurations.</p>
|
<p>Full view access, including peer keys and configuration files. Cannot modify any settings or configurations.</p>
|
||||||
|
|
||||||
<h5>Peer Manager</h5>
|
<h5>Peer Manager</h5>
|
||||||
|
@ -162,7 +163,7 @@ def view_manage_user(request):
|
||||||
<h4>Enhanced Filter</h4>
|
<h4>Enhanced Filter</h4>
|
||||||
<p>This option filters the API status response to include only peers that the user has access to. Depending on the size of your environment, enabling this option may impact performance. To mitigate this, consider increasing the "Web Refresh Interval" to reduce the number of requests.</p>
|
<p>This option filters the API status response to include only peers that the user has access to. Depending on the size of your environment, enabling this option may impact performance. To mitigate this, consider increasing the "Web Refresh Interval" to reduce the number of requests.</p>
|
||||||
|
|
||||||
'''
|
''')
|
||||||
}
|
}
|
||||||
|
|
||||||
context = {
|
context = {
|
||||||
|
@ -171,6 +172,6 @@ def view_manage_user(request):
|
||||||
'user_acl': user_acl,
|
'user_acl': user_acl,
|
||||||
'instance': user_acl,
|
'instance': user_acl,
|
||||||
'form_description': form_description,
|
'form_description': form_description,
|
||||||
'delete_confirmation_message': 'Please type the username to proceed.'
|
'delete_confirmation_message': _('Please type the username to proceed.')
|
||||||
}
|
}
|
||||||
return render(request, 'generic_form.html', context)
|
return render(request, 'generic_form.html', context)
|
Loading…
Add table
Add a link
Reference in a new issue