# j-PermissionsOP

> Upraviť rolu, skupinu a používateľské oprávnenia pre aplikácie OpenPlatform.

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

Komponent upravuje oprávnenia používateľov, rolí a skupín OpenPlatform. Vybrané oprávnenia prepojte s cestou modelu a nastavte endpointy `find` a `read`. Model obsahuje reťazce oprávnení:

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

- prvé písmeno znamená povolený typ, definovaný v `types`
- `@admin` znamená úlohu `admin`
- `#employees` znamená skupinu `employees`
- `123456` znamená špecifický `userid`

__Konfigurácia__:

- `placeholder` {String} priestorový držiak pre komponenty `j-Directory` (predvolené: `Search`)
- `types` {String} typy povolenia (rozsah obmedzený charom, predvolený: `CRUD`)
- `disabled` {Boolean} voliteľné, zakáže tento komponent
- `default` {String} predvolená hodnota `type` (predvolená: `R`)
- `dirkey` {String} voliteľné, kľúč pre text v `j-Directory` (predvolené: `name`)
- `labelrole` {String} voliteľná značka pre úlohy (predvolené: `Role`)
- `labelgroup` {String} voliteľné označenie pre skupiny (predvolené: `Group`)
- `limit` {Číslo} počet povolených povolení (predvolené: `0` = neobmedzené)
- `pk` {String} primárny kľúč, ktorého hodnota bude viazaná na model (predvolené: `id`)
- __IMPORTANT__ `find` {String} URL adresa pre nájdenie úloh, skupín a používateľov, komponenta odošle `url?q=SEARCH_QUERY` (odošľa prázdnu hodnotu)
- __IMPORTANT__ `read` {String} adresa URL pre čítanie rolí, skupín a používateľov, komponenta odošle `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' }];
```

## Použitie

```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>
```

Pre výberové menu deklarujte `j-Directory`. Oba endpointy vracajú pole objektov s textovými vlastnosťami `id` a `name`. Endpoint `find` dostáva hľadaný text v `q`. Endpoint `read` dostáva identifikátory oddelené čiarkami v `id` a načíta oprávnenia, ktoré už model obsahuje. Pole identifikátora vyberá `pk`; predvolená hodnota je `id`. Identifikátory rolí majú predponu `@` a identifikátory skupín `#`.

Zdroj: [Total.js komponenty](https://github.com/totaljs/components/tree/910ed1a86f6e72b4f031d3ad0dc7844f9fc5cb8e/j-PermissionsOP). Autorské právo Peter Širka a prispievatelia. [Licencia MIT](/knowledge-licenses.json).
