# j-PermissionsOP

> Edite permisos de roles, grupos y usuarios para aplicaciones OpenPlatform.

Framework: jcomponent20
Product: jComponent 20 (jcomponent@20)
Language: es
Content-SHA256: 1dcec9cbf46881dcd9775aeed7c50670e6f69442bde83774f529a63179db47e3
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: components@910ed1a86f6e72b4f031d3ad0dc7844f9fc5cb8e
Review: usage-reviewed

El componente edita los permisos de usuarios, roles y grupos de OpenPlatform. Vincula los permisos seleccionados a una ruta del modelo y configura los endpoints `find` y `read`. El modelo contiene cadenas de permisos:

```
['C@admin', 'U@admin', 'R@admin', 'D@admin', 'R123456', 'R#employees']
```

- la primera letra significa tipo permitido, definido en `types`
- `@admin` significa un rol `admin`
- `#employees` significa un grupo `employees`
- `123456` significa un `userid` específico

__Configuración__:

- `placeholder` {String} un marcador de posición para el componente `j-Directory` (predeterminado: `Search`)
- `types` {String} tipos de permiso (matriz delimitada por caracteres, predeterminado: `CRUD`)
- `disabled` {Booleano} opcional, desactiva este componente
- `default` {String} valor predeterminado de `type` (predeterminado: `R`)
- `dirkey` {String} opcional, una clave para texto en `j-Directory` (predeterminado: `name`)
- `labelrole` {String} opcional una etiqueta para roles (predeterminado: `Role`)
- `labelgroup` {String} opcional una etiqueta para grupos (predeterminado: `Group`)
- `limit` {Número} un recuento de permisos permitidos (predeterminado: `0` = ilimitado)
- `pk` {String} una clave principal cuyo valor se vinculará al modelo (predeterminado: `id`)
- __IMPORTANTE__ `find` {String} Dirección URL para buscar roles, grupos y usuarios, el componente envía `url?q=SEARCH_QUERY` (envía valor vacío)
- __IMPORTANTE__ `read` {String} Dirección URL para lectura de roles, grupos y usuarios, el componente envía `url?id=@role,#group,userid,...`

```javascript
// The component expects data:
['C@admin', 'U@admin', 'R@admin', 'D@admin', 'R123456', 'R#employees'];

// The component tries to find data:
// The component tries to read data and it pairs them with the model automatically:
[{ id: '123456', name: 'Peter Širka' }, { id: '@admin', name: 'Administrators' }, { id: '#employees', name: 'Employees' }];
```

## Uso

```html
<ui-component name="directory"></ui-component>
<ui-component name="permissionsop" path="form.permissions"
  config="find:/api/permissions/search/;read:/api/permissions/read/;types:CRUD"></ui-component>
<script>
  ON('request', function(request) {
    if (request.method === 'GET' && request.data &&
        request.url.indexOf('/api/permissions/') === 0) {
      request.url = QUERIFY(request.url, request.data);
      request.data = null;
    }
  });
  SET('form.permissions', ['R@admin', 'U#employees']);
</script>
```

Declara `j-Directory` para el menú de selección. Ambos endpoints devuelven un array de objetos con las propiedades de texto `id` y `name`. El endpoint `find` recibe el texto de búsqueda en `q`. El endpoint `read` recibe identificadores separados por comas en `id` y resuelve los permisos que ya están en el modelo. Utiliza `pk` para elegir el campo identificador; su valor predeterminado es `id`. Los identificadores de roles llevan el prefijo `@` y los de grupos, `#`.

Fuente: [Total.js componentes](https://github.com/totaljs/components/tree/910ed1a86f6e72b4f031d3ad0dc7844f9fc5cb8e/j-PermissionsOP). Copyright Peter Širka y colaboradores. [Licencia MIT](/knowledge-licenses.json).
