2026-02-20 17:19:15 -03:00
|
|
|
from functions.database import get_db_session, Usuario
|
2025-04-03 15:58:07 -03:00
|
|
|
from functions.rbac import Role, Permission
|
|
|
|
|
|
|
|
|
|
def migrate_existing_users():
|
|
|
|
|
"""Migra os usuários existentes para o novo sistema RBAC"""
|
2026-02-20 17:19:15 -03:00
|
|
|
db = get_db_session()
|
2025-04-03 15:58:07 -03:00
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
# Buscar todos os usuários
|
2026-02-20 17:19:15 -03:00
|
|
|
usuarios = db.query(Usuario).all()
|
2025-04-03 15:58:07 -03:00
|
|
|
|
|
|
|
|
# Buscar ou criar role de administrador
|
2026-02-20 17:19:15 -03:00
|
|
|
admin_role = db.query(Role).filter_by(nome="Administrador").first()
|
2025-04-03 15:58:07 -03:00
|
|
|
if not admin_role:
|
|
|
|
|
admin_role = Role(nome="Administrador", nivel=Role.SECRETARIO_GERAL)
|
2026-02-20 17:19:15 -03:00
|
|
|
db.add(admin_role)
|
2025-04-03 15:58:07 -03:00
|
|
|
|
|
|
|
|
# Buscar ou criar role de militante básico
|
2026-02-20 17:19:15 -03:00
|
|
|
militante_role = db.query(Role).filter_by(nome="Militante Básico").first()
|
2025-04-03 15:58:07 -03:00
|
|
|
if not militante_role:
|
|
|
|
|
militante_role = Role(nome="Militante Básico", nivel=Role.MILITANTE_BASICO)
|
2026-02-20 17:19:15 -03:00
|
|
|
db.add(militante_role)
|
2025-04-03 15:58:07 -03:00
|
|
|
|
|
|
|
|
# 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)
|
|
|
|
|
|
2026-02-20 17:19:15 -03:00
|
|
|
db.commit()
|
2025-04-03 15:58:07 -03:00
|
|
|
print("Migração de usuários concluída com sucesso!")
|
|
|
|
|
|
|
|
|
|
except Exception as e:
|
2026-02-20 17:19:15 -03:00
|
|
|
db.rollback()
|
2025-04-03 15:58:07 -03:00
|
|
|
print(f"Erro durante a migração de usuários: {str(e)}")
|
|
|
|
|
raise e
|
|
|
|
|
finally:
|
2026-02-20 17:19:15 -03:00
|
|
|
db.close()
|
2025-04-03 15:58:07 -03:00
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
migrate_existing_users()
|