20. Desarrollando con Odoo (15). Permisos y grupos. Crear usuarios de la aplicación. Restringir permisos a usuarios
1. Permisos por modelo
1.1 Fichero security/ir.model.access.csv
En cada módulo, los permisos de acceso se guardan en security/ir.model.access.csv
id, name, model_id:id, group_id:id, perm_read,perm_write,perm_create,perm_unlink access_az_padron_citizen,az_padron.citizen,model_res_partner, base.group_user,1, 1, 1, 1 access_az_padron_history,az_padron.history,model_az_padron_history,base.group_user,1, 1, 1, 1
Siendo:
- id: access_appName_modelName
- name: appName_modelName
- model_id:id: model_appName_modelName . Ojo que en la tercera línea no coinciden los modelos y ello es debido a que el modelo citizen hereda de res.partner usando la misma tabla (como vimos tienen el mismo name y utiliza inherit de res.partner)
- group_id:id: Nombre del grupo por ejemplo base.group_user. Si no se hubiera pusto nada, indica que todos los grupos pueden acceder. En este caso solo puede acceder este grupo ??????
- perm_XXXX: (siendo XXXX: read (lectura), write (escritura), create (altas o crer nuevos registros), unlink (bajas o eliminar registros) , tomando los valores 1= permitido ó 0=No permitido
Recordar que hay que dar una entrada a 'data' al fichero __manifest__.py de este fichero.
1.2 Ajustes-Técnico- (Seguridad-Permisos de acceso)
Es una manera de ver todos los "security/ir.model.access.csv" a la vez. En este caso vemos que los dos primeros registros coinciden con el contenido del fichero para el módulo "az_padron"
1.3 Fichero security/security.xml
Aquí podemos crear el grupo.
Recordemos:
1. Que en __manifest__.py hemos creado una entrada a category
# Categories can be used to filter modules in modules listing # Check https://github.com/odoo/odoo/blob/16.0/odoo/addons/base/data/ir_module_category_data.xml # for the full list 'category': 'Ximo Proves', 'version': '0.1', # any module necessary for this one to work correctly 'depends': ['base'],
2. Nos hace falta el metadato XML ID del modelo ir.module.category, lo consultamos:
Ajustes-Usuarios y Compañías - Grupos -Nuevo
Y seleccionamos en aplicación la categoría "Ximo Proves" y vamos a ver las catagorías
Y aparece una lista de metadatos y obtenemos el XML ID
Ahora el fichero security/security.xml queda:
<?xml version="1.0" encoding="utf-8"?> <odoo> <record id="ximoapp01_access" model="res.groups"> <field name="name">Ximoapp01 Access</field> <field name="category_id" ref="base.module_category_ximo_proves"/> </record> </odoo>
Observar que el atributo ref es el valor del metadato XML ID de la catagoría "Ximo Acces"
3. Con esto hemos creado el grupo ximo_access, y podemos meter dicho grupo (ximoapp01_access) en el fichero security/ir.model.access.csv en el apartado group_id:id
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_ximoapp01_task,ximoapp01.task,model_ximoapp01_task,ximoapp01_access,1,1,1,1 access_ximoapp01_sprint,ximoapp01.sprint,model_ximoapp01_sprint,ximoapp01_access,1,1,1,1 access_ximoapp01_technology,ximoapp01.technology,model_ximoapp01_technology,ximoapp01_access,1,1,1,1
access_ximoapp01_project,ximoapp01.project,model_ximoapp01_project,ximoapp01_access,1,1,1,1
access_ximoapp01_history,ximoapp01.history,model_ximoapp01_history,ximoapp01_access,1,1,1,1
access_ximoapp01_bug,ximoapp01.bug,model_ximoapp01_bug,ximoapp01_access,1,1,1,1
access_ximoapp01_improvement,ximoapp01.improvement,model_ximoapp01_improvement,ximoapp01_access,1,1,1,1
Recordar que hay que dar una entrada a 'data' al fichero __manifest__.py de este fichero.
4. OJO el orden de los ficheros es importante, y primero se debe introducir security.xml y después ir.model.access.cv dentro de la lista data
# -*- coding: utf-8 -*- { 'name': "ximoapp01", 'summary': "Aprendiendo Odoo 16", 'description': "Ejercicio de Odoo 16", 'author': "Ximo Dante", 'website': "https://www.yourcompany.com", # Categories can be used to filter modules in modules listing # Check https://github.com/odoo/odoo/blob/16.0/odoo/addons/base/data/ir_module_category_data.xml # for the full list 'category': 'Ximo Proves', 'version': '0.1', # any module necessary for this one to work correctly 'depends': ['base'], # always loaded 'data': [ 'security/security.xml', 'security/ir.model.access.csv', 'views/views.xml', 'views/project.xml', 'views/history.xml', 'views/task.xml', 'views/sprint.xml', 'views/technology.xml', 'views/bug.xml', 'views/improvement.xml', 'views/developer.xml', 'views/templates.xml', 'report/task_report.xml', 'report/task_template.xml' ], # only loaded in demonstration mode 'demo': [ 'demo/demo.xml', ], }
2. Grupos
Si nos fijamos, mediante el fichero security.xml hems creado ya un grupo. Si vamos a Ajustes-Usuarios y Compañías - Grupos observamos que ya está creado , junto a los modelos que puede acceder
Este grupo se hubiera podido crear directamente dándole al botón Nuevo dentro de Grupos.
Ahora falta añadir usuarios en la pestaña de usuarios
3. Creando usuarios a la aplicación
Vamos a crear tres usuarios de prueba (usr04, usr05 y usr06) y vamos a asignarles al grupo de la aplicación
Para ello entramos en el modo administrador Ajustes- Usuarios y Compañías - Usuarios -Nuevo
y creamos un usuario con nombre y email de user04 y sin ningún permiso para este caso (lo mismo se haría para usr05 y usr06)
Y le cambiamos la contraseña:
Una vez creado el usuario usr04, vemos que puede acceder a la aplicación ximoapp01 pero solo a la parte de "developer" pues hereda de "res.partners", pero no a lo demás.
Para que pueda acceder al resto de módulos de la aplicación, debemos incluir dicho usuario en el grupo ximoapp01_access
Vamos a Ajustes- Usuarios y Compañías - Grupos y modificamos el grupo en cuestión y le añadimos los 3 usuarios
Si ahora entramos mediante las credenciales de uno de estos 3 usuarios ya debería poder entrar en la aplicación.
Comentarios
Publicar un comentario