From 338115ad62fb3187bde604457d582c3c14c225d4 Mon Sep 17 00:00:00 2001 From: Marcio Mazza Date: Fri, 16 Mar 2018 12:06:16 -0300 Subject: [PATCH] =?UTF-8?q?Limita=20n=C3=BAmero=20de=20superusu=C3=A1rios?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/legacy/migracao_usuarios.py | 32 ++++++++++++++++++++++++------ sapl/legacy/scripts/migra_um_db.sh | 4 ++-- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/sapl/legacy/migracao_usuarios.py b/sapl/legacy/migracao_usuarios.py index 666bf57ef..106a2def6 100644 --- a/sapl/legacy/migracao_usuarios.py +++ b/sapl/legacy/migracao_usuarios.py @@ -1,13 +1,13 @@ import yaml - from django.contrib.auth.models import Group, User + from sapl.hashers import zope_encoded_password_to_django from sapl.settings import MEDIA_ROOT PERFIL_LEGADO_PARA_NOVO = {legado: Group.objects.get(name=novo) for legado, novo in [ ('Autor', 'Autor'), - ('Operador', 'Operador Geral'), + ('Operador', 'Operador Geral'), ('Operador Comissao', 'Operador de Comissões'), ('Operador Materia', 'Operador de Matéria'), ('Operador Modulo Administrativo', 'Operador Administrativo'), @@ -82,16 +82,36 @@ def migrar_usuarios(): set(dados['roles']) - IGNORADOS) for nome, dados in usuarios.items()] + admins = [] for nome, senha, perfis in usuarios: usuario = User.objects.get_or_create(username=nome)[0] usuario.password = zope_encoded_password_to_django(senha) for perfil in perfis: if perfil in ADMINISTRADORES: - # Manager - usuario.is_superuser = True + # todos os administradores ganham perfil "Operador Geral" + usuario.groups.add(PERFIL_LEGADO_PARA_NOVO['Operador']) + admins.append(usuario) else: usuario.groups.add(PERFIL_LEGADO_PARA_NOVO[perfil]) usuario.save() - # apaga arquivo (importante pois contém senhas) - ARQUIVO_USUARIOS.remove() + + # restringe e configura administradores + if len(admins) > 2: + admins = ( + # ususários com admin no nome + [u for u in admins if 'admin' in u.username] + # senão, o usuário saploper, apenas + or [u for u in admins if 'saploper' == u.username] + # senão, simplesmente até os dois primeiros da lista + or admins[:2] + ) + for admin in admins: + admin.is_superuser = True + admin.save() + print('Usuários migrados com sucesso.') + print('#' * 100) + print('Uusários administradores:') + for admin in admins: + print(admin.username) + print('#' * 100) diff --git a/sapl/legacy/scripts/migra_um_db.sh b/sapl/legacy/scripts/migra_um_db.sh index eca35f0a3..577a2c000 100755 --- a/sapl/legacy/scripts/migra_um_db.sh +++ b/sapl/legacy/scripts/migra_um_db.sh @@ -37,9 +37,9 @@ if [ $# -ge 2 ]; then DATABASE_NAME=$1 ./manage.py migrate --settings sapl.legacy_migration_settings echo >> $LOG - echo "--- MIGRACAO DE DADOS ---" | tee -a $LOG + echo "--- MIGRACAO ---" | tee -a $LOG echo >> $LOG - DATABASE_NAME=$1 ./manage.py migracao_25_31 --force --dados --settings sapl.legacy_migration_settings 2>&1 | tee -a $LOG + DATABASE_NAME=$1 ./manage.py migracao_25_31 --force --settings sapl.legacy_migration_settings 2>&1 | tee -a $LOG echo >> $LOG else echo "USO:"