---
title: "Sign"
description: "Podpisy elektroniczne. Każda aplikacja jest modułem na jednym modelu danych."
canonical: "https://obop.dev/pl/apps/sign/"
lang: "pl"
---

# Sign

## Do czego służy

Manage templates and signature requests through draft, sent, signed, declined and expired, and record the document hash that was signed. The platform cannot yet lock a record, so a signed request is immutable by convention only.

## Co pakiet robi, a czego nie robi

Document templates and signature requests with a draft, sent, signed, declined, expired flow. A request names the signer (personal data) and keeps the signature evidence as references. A signed request is immutable by convention only: the platform cannot yet lock a record, so nobody should edit a request once it is signed, and the document_hash records what was signed. Sending and recording a signature need a human approval; agents may only propose them.

## Modele

### `sign_template`

A document that can be sent out for signature

Grupa odczytu: `sign.user`. Grupa zapisu: `sign.manager`.

| Pole | Rodzaj | Klasa danych | Dane osobowe | Grupa | Agenci widzą | Opis |
|---|---|---|---|---|---|---|
| `name` | text | `none` | nie | `sign.user` | jawnie | Template name, for example Employment contract |
| `description` | longtext | `none` | nie | `sign.user` | jawnie | What the document is for and who signs it |
| `body` | longtext | `none` | nie | `sign.user` | jawnie | The document text, or a reference to where the file is kept |
| `signer_role` | text | `none` | nie | `sign.user` | jawnie | Role of the person who signs, for example Customer |
| `active` | bool | `none` | nie | `sign.user` | jawnie | Whether new requests can use the template |

### `sign_request`

A request for one person to sign one document

Grupa odczytu: `sign.user`. Grupa zapisu: `sign.user`.

| Pole | Rodzaj | Klasa danych | Dane osobowe | Grupa | Agenci widzą | Opis |
|---|---|---|---|---|---|---|
| `template_id` | ref → sign_template | `none` | nie | `sign.user` | jawnie | The document to sign |
| `title` | text | `none` | nie | `sign.user` | jawnie | Subject shown to the signer |
| `message` | longtext | `none` | nie | `sign.user` | jawnie | Message shown to the signer in the request |
| `signer_name` | text | `internal` | tak | `sign.user` | zamaskowane | Name of the person who must sign |
| `signer_email` | text | `internal` | tak | `sign.user` | zamaskowane | Email address the request is sent to |
| `sent_on` | date | `none` | nie | `sign.user` | jawnie | Day the request was sent (YYYY-MM-DD) |
| `expires_on` | date | `none` | nie | `sign.user` | jawnie | Last day the request can be signed (YYYY-MM-DD) |
| `signed_on` | date | `none` | nie | `sign.user` | jawnie | Day the document was signed (YYYY-MM-DD) |
| `signer_ip` | text | `internal` | tak | `sign.manager` | zamaskowane | IP address the signature came from (evidence) |
| `signer_user_agent` | text | `internal` | tak | `sign.manager` | zamaskowane | Browser the signature was made with (evidence) |
| `signature_reference` | text | `none` | nie | `sign.manager` | jawnie | Where the signature image or certificate is stored |
| `document_hash` | text | `none` | nie | `sign.manager` | jawnie | SHA-256 hash (hex) of the signed document, to prove it was not changed afterwards |
| `state` | select (draft, sent, signed, declined, expired) | `none` | nie | `sign.user` | jawnie | Request status: draft, sent, signed, declined, expired |

## Przepływy pracy

### `sign_request`

| Akcja | Przenosi | Kto może uruchomić | Zatwierdzenie |
|---|---|---|---|
| `sign_request.send` | state: draft → sent | `sign.user` | tak |
| `sign_request.sign` | state: sent → signed | `sign.manager` | tak |
| `sign_request.decline` | state: sent → declined | `sign.user` | nie |
| `sign_request.expire` | state: sent → expired | `sign.user` | nie |

## Grupy uprawnień

Grupy używane przez tę aplikację:

- `sign.manager`
- `sign.user`

## Kroki zatwierdzania

Kroki, które agent może tylko zaproponować:

- `sign_request.send`
- `sign_request.sign`

## Co agenci mogą, a czego nie mogą

Agent może odczytywać, wyszukiwać, tworzyć i aktualizować rekordy tej aplikacji oraz uruchamiać akcje niewymagające zatwierdzenia, w ramach grup uprawnień swojego tokenu.

Te kroki może tylko zaproponować, a człowiek musi je zatwierdzić: `sign_request.send`, `sign_request.sign`, `sign_template.delete`, `sign_request.delete`.

Dane osobowe są maskowane jako tokeny zastępcze: `sign_request.signer_name`, `sign_request.signer_email`, `sign_request.signer_ip`, `sign_request.signer_user_agent`.

## Zależności

Brak.

## Instalacja

Zainstaluj ją w aplikacji Customize (Marketplace) lub z wiersza poleceń:

```bash
obop modules install-from sign
```

Wymaga bazy danych i uprawnień administratora.

## Zbuduj własną

[Przewodnik po modułach pokazuje, jak pisze się takie aplikacje](/pl/docs/reference/module-manifest/)
