Closed mbdaso closed 5 years ago
Es una muy buena idea. Me encanta. Normalmente (y te servirá para la memoria) primero se suele pensar como en una matriz. Por ejemplo en las columnas, que objetos se pueden manipular:
En las filas, que acciones: list, give, etc. Claro quizás no sea awards.self:list sino awards:list_self o awards:list_all.
Digamos que listar todos o solo los tuyos son capacidades diferentes en esa matriz.
Es importante cuando se implementa un sistema de seguridad que haya unos valores por defecto razonables. Para la memoria se puede hacer la tabla / matrix marcando con un X los permisos por defecto.
Bueno, esto es un rollo formal para pensar y dejalo documentado.
Respecto a la implementación, no te lies. Si lo haces permission = "cadena" en Python obtendrás una cadena que tendrás que parsear. Dividir por , por : intepretar y volver a generar.
Pero estás usando JSON precisamente para ahorrarte todo eso. Los permisos pueden ser un dict con una entrada por entidad y para cada entrada una lista de permisos; ['give', 'list']
Eso así es más directo de manipular en Python. No es una cadena que hay que interpretar. Son estructuras de datos que python ya entiende. Y, lo mejor, al pasar a JSON, se convierten solas a array y objects de JSON. La volver a recuperar, se convierten automáticamente diccionarios y listas de python. Así que la manipulación es directa. Sin tener que añadir código para parsear.
Al menos eso es lo que yo haría.
Originally posted by @aplatanado in https://github.com/aplatanado/slack-badges-bot/pull/14#issuecomment-522804518
Me gustaría hacer esto con la línea de comandos, ya que tenemos una entidad para personas, se me ocurre que se puede poner en las entidades además de la información de contacto, los permisos que tienen sobre las medallas. Algo parecido a lo que hace slack: https://api.slack.com/scopes Los permisos pueden ser un string que diga qué comandos puede ejecutar esa persona en slack, por ejemplo:
permissions = 'badges:give,badges:list,awards.self:list,awards.others:list'.
Luego con la línea de comando se puede modificar a una persona para cambiar sus permisos.