Saltar al contenido principal

Como generar permisos a un nuevo rol en la plataforma.

En esta sección se va a detallar como generar permisos de lectura, escritura, edición y borrado de recursos de la plataforma a un rol en especifico y como asignarle el rol a un usuario.

Crear un virtual environment con python

python3 -m venv my-env
source juli-env/bin/activate

Script de migración de permisos

Vamos a usar el siguiente código en python para automatizar la asignacion de permisos.

import requests
import pandas as pd
import json

url = ""

def add_perm(perm, action, actionName, rol, token):
if action == "-": return

payload = {'permiso': perm + "." + actionName, 'rol': rol}

r = requests.post(url + "/api/usuarios/addPermisos", headers={'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json'}, data=json.dumps(payload))
print(r.text)

def get_token(uid):
x = requests.get(url + "/api/tokenGenerators?uid=" + uid)

return x.json()

def grant_action(row, token, rol):
perm = row["Elemento"]

add_perm(perm, row["create"], "create", rol, token)
add_perm(perm, row["update"], "update", rol, token)
add_perm(perm, row["select"], "find", rol, token)
add_perm(perm, row["delete"], "delete", rol, token)

def get_actions(token, rol):
df = pd.read_excel('actions.xlsx')
df = df.reset_index()

for index, row in df.iterrows():
grant_action(row, token, rol)

def main():
uid = ""
rol = ""
token = get_token(uid)

get_actions(token, rol)

if __name__ == "__main__":
main()

Crear archivo excel con los permisos del nuevo rol.

Descargar ejemplo de archivo excel

En el código anterior mostrado modificar las siguientes variables:

url = ""
uid = ""
rol = ""
  • url: Url de apis.
  • uid: Uid del usuario que va a realizar la acción (osea el que está leyendo esta documentación)
  • rol: El nuevo rol creado.

Ejecutar script

python3 main.py

Output

{"nombre":"soporte-help","accion":"auditorias.find","id":1234}
{"nombre":"soporte-help","accion":"avisos.create","id":1235}
{"nombre":"soporte-help","accion":"avisos.update","id":1236}
{"nombre":"soporte-help","accion":"avisos.find","id":1237}
{"nombre":"soporte-help","accion":"CantIncPorTipoYChofer.find","id":1238}
{"nombre":"soporte-help","accion":"CantIncPorTipoYVeh.find","id":1239}
{"nombre":"soporte-help","accion":"carga.create","id":1240}
{"nombre":"soporte-help","accion":"carga.update","id":1241}
{"nombre":"soporte-help","accion":"carga.find","id":1242}
{"nombre":"soporte-help","accion":"carga.delete","id":1243}
{"nombre":"soporte-help","accion":"cartografia.find","id":1244}
{"nombre":"soporte-help","accion":"casos.create","id":1245}
{"nombre":"soporte-help","accion":"casos.update","id":1246}
{"nombre":"soporte-help","accion":"casos.find","id":1247}
{"nombre":"soporte-help","accion":"choferes.update","id":1248}
{"nombre":"soporte-help","accion":"choferes.find","id":1249}
{"nombre":"soporte-help","accion":"cisternaVehiculos.create","id":1250}
........
........
........