67 lines
3.5 KiB
Python
67 lines
3.5 KiB
Python
from models.service_roles import ServiceRole
|
|
from models.service_role_permission import ServiceRolePermission
|
|
from models.service_instance import ServiceInstance
|
|
from models.permission import Permission
|
|
from models.user import User
|
|
from extensions import db
|
|
|
|
def seed_service_role_permissions():
|
|
user = User.query.first() # Obtém o primeiro usuário para fins de exemplo
|
|
service_instance = ServiceInstance.query.first() # Obtém a primeira instância de serviço
|
|
|
|
# Verifica se há um usuário e uma instância de serviço
|
|
if user and service_instance:
|
|
# Define as permissões que você deseja atribuir
|
|
permissions = [
|
|
{'name': "Read Access", 'description': "Permission to read data", 'type': 'read'},
|
|
{'name': "Write Access", 'description': "Permission to write data", 'type': 'write'},
|
|
{'name': "Edit Access", 'description': "Permission to edit data", 'type': 'edit'},
|
|
{'name': "Delete Access", 'description': "Permission to delete data", 'type': 'delete'},
|
|
]
|
|
|
|
# Itera sobre todos os service roles (1 a 10)
|
|
for service_role_id in range(1, 11): # Para cada role de 1 até 10
|
|
service_role = ServiceRole.query.get(service_role_id)
|
|
if not service_role:
|
|
print(f"ServiceRole com id {service_role_id} não encontrado.")
|
|
continue # Se o service_role não existir, pula
|
|
|
|
# Para cada permissão definida, associa ao service role
|
|
for perm in permissions:
|
|
# Verifica se a permissão já existe no banco de dados
|
|
existing_permission = Permission.query.filter_by(name=perm['name']).first()
|
|
if not existing_permission:
|
|
# Se a permissão não existir, cria e adiciona ao banco
|
|
permission = Permission(name=perm['name'], description=perm['description'])
|
|
db.session.add(permission)
|
|
db.session.commit()
|
|
print(f"Permissão '{perm['name']}' criada com sucesso.")
|
|
else:
|
|
permission = existing_permission
|
|
|
|
# Verifica se a permissão de papel de serviço já existe
|
|
existing_permission_role = ServiceRolePermission.query.filter_by(
|
|
service_role_id=service_role.id,
|
|
service_instance_id=service_instance.id,
|
|
permission_id=permission.id,
|
|
user_id=user.id
|
|
).first()
|
|
|
|
if not existing_permission_role:
|
|
# Se a permissão de papel de serviço não existir, cria e adiciona ao banco
|
|
service_role_permission = ServiceRolePermission(
|
|
service_role_id=service_role.id,
|
|
service_instance_id=service_instance.id,
|
|
permission_id=permission.id,
|
|
permission_type=perm['type'], # Definindo o tipo de permissão (read, write, etc.)
|
|
user_id=user.id
|
|
)
|
|
db.session.add(service_role_permission)
|
|
db.session.commit()
|
|
print(f"Permissão de papel de serviço '{perm['name']}' atribuída com sucesso para o role '{service_role.name}'.")
|
|
else:
|
|
print(f"Permissão de papel de serviço '{perm['name']}' já atribuída para o role '{service_role.name}'.")
|
|
|
|
else:
|
|
print("Usuário ou instância de serviço não encontrados.")
|