# j-PermissionsOP

> Editar funções, grupos e permissões de usuário para aplicações OpenPlatform.

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

O componente edita permissões de utilizadores, funções e grupos do OpenPlatform. Associe as permissões selecionadas a um caminho do modelo e configure os endpoints `find` e `read`. O modelo contém cadeias de permissões:

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

- A primeira letra significa tipo permitido, definido em `types`
- `@admin` significa um papel de `admin`
- `#employees` significa um grupo de `employees`
- `123456` significa um `userid` específico

__Configuração__:

- `placeholder` {String} um alojamento para o componente `j-Directory` (default: `Search`)
- `types` {String} tipos de permissão (array delimitado por char, padrão: `CRUD`)
- `disabled` {Boolean} opcional, desabilita este componente
- `default` {String} valor padrão de `type` (default: `R`)
- `dirkey` {String} opcional, uma chave para texto em `j-Directory` (default: `name`)
- `labelrole` {String} opcional um rótulo para roles (default: `Role`)
- `labelgroup` {String} opcional uma etiqueta para grupos (default: `Group`)
- `limit` {Número} um número de permissões permitidas (default: `0` = ilimitado)
- `pk` {String} uma chave primária cujo valor será ligado ao modelo (default: `id`)
- __IMPORTANT__ `find` {String} URL para encontrar papéis, grupos e usuários, o componente envia `url?q=SEARCH_QUERY` (envia valor vazio)
- __IMPORTANT__ `read` {String} URL para rolos de leitura, grupos e usuários, o componente envia `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>
```

Declare `j-Directory` para o menu de seleção. Ambos os endpoints devolvem um array de objetos com as propriedades de texto `id` e `name`. O endpoint `find` recebe o texto de pesquisa em `q`. O endpoint `read` recebe identificadores separados por vírgulas em `id` e resolve as permissões já presentes no modelo. Utilize `pk` para escolher o campo identificador; o valor predefinido é `id`. Os identificadores de funções têm o prefixo `@` e os de grupos, `#`.

Fonte da fonte: [Componentes Total.js](https://github.com/totaljs/components/tree/910ed1a86f6e72b4f031d3ad0dc7844f9fc5cb8e/j-PermissionsOP)Copyright Peter Širka e contribuintes. [A licença](/knowledge-licenses.json).
