Files
controles/sql/migrate_rbac.py
Mateus Tavares 2b1668206d - inits centralizados, READMEs atualizados
- padronizando o nome de get_db_connection e session para get_db_session, para não confundir com session do Flask ou sessoes web

- corrigindo potenciais erros

-- has_permission nao consegue com lazy load carregar permission depois de load_user fechar a conexao, entao joinedLoad com Permission antes de fechar

-- db.rollback não existe caso db = get_db_session() apareça muito depois dentro do try, padronizando antes de try

--- comparar role por nivel (Role.SECRETARIO_GERAL) e nao por nome ("Secretario Geral")

- unificacao de get_otp_qr_code

- mudança de nowutc() para now(UTC) conforme novo padrão
2026-02-20 17:19:15 -03:00

47 lines
1.6 KiB
Python

from functions.database import get_db_session, Usuario
from functions.rbac import Role, Permission
def migrate_existing_users():
"""Migra os usuários existentes para o novo sistema RBAC"""
db = get_db_session()
try:
# Buscar todos os usuários
usuarios = db.query(Usuario).all()
# Buscar ou criar role de administrador
admin_role = db.query(Role).filter_by(nome="Administrador").first()
if not admin_role:
admin_role = Role(nome="Administrador", nivel=Role.SECRETARIO_GERAL)
db.add(admin_role)
# Buscar ou criar role de militante básico
militante_role = db.query(Role).filter_by(nome="Militante Básico").first()
if not militante_role:
militante_role = Role(nome="Militante Básico", nivel=Role.MILITANTE_BASICO)
db.add(militante_role)
# Atualizar usuários
for usuario in usuarios:
# Se o usuário já tem roles, pular
if usuario.roles:
continue
# Atribuir role com base no is_admin
if usuario.is_admin:
usuario.roles.append(admin_role)
else:
usuario.roles.append(militante_role)
db.commit()
print("Migração de usuários concluída com sucesso!")
except Exception as e:
db.rollback()
print(f"Erro durante a migração de usuários: {str(e)}")
raise e
finally:
db.close()
if __name__ == '__main__':
migrate_existing_users()