> For the complete documentation index, see [llms.txt](https://alecmei-gubin.gitbook.io/citron-system/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://alecmei-gubin.gitbook.io/citron-system/untitled/rabota-s-polzovatelyami.md).

# Работа с пользователями

С помощью API вы имеете возможность создавать пользователей, редактировать, получать информацию о них, удалять. Все это возможно при условии, если вы имеете статус администратора.

Расcмотрим несколько методов:

## index

<mark style="color:blue;">`GET`</mark> `https://api.url/api/users`

Возвращает список пользователей\
Роли: пользователь и выше

#### Headers

| Name          | Type    | Description                     |
| ------------- | ------- | ------------------------------- |
| Authorization | integer | Токен, выданный при авторизации |

{% tabs %}
{% tab title="200 " %}

```javascript
{
    "data": [
        {
            "id": 1,
            "name": "Петр",
            "email": "petr@ya.ru",
            "updated_at": "2019-09-25T19:38:00.000000Z",
            "created_at": "2019-09-23T21:26:58.000000Z",
            "role": {
                "id": 1,
                "name": "Администратор"
            }
        },
        {
            "id": 2,
            "name": "Алексей",
            "email": "alecmei.gubin@yandex.r",
            "updated_at": "2019-09-23T21:36:50.000000Z",
            "created_at": "2019-09-23T21:36:50.000000Z",
            "role": {
                "id": 2,
                "name": "Модератор"
            }
        }
    ]
}
```

{% endtab %}
{% endtabs %}

## show

<mark style="color:blue;">`GET`</mark> `https://api.url/api/users/{id}`

Возвращает конкретного пользователя\
Роли: пользователь и выше

#### Path Parameters

| Name | Type    | Description               |
| ---- | ------- | ------------------------- |
| id   | integer | ID пользователя в системе |

#### Headers

| Name          | Type   | Description                     |
| ------------- | ------ | ------------------------------- |
| Authorization | string | Токен, выданный при авторизации |

{% tabs %}
{% tab title="200 " %}

```javascript
{
    "data": {
        "id": 2,
        "name": "Алексей",
        "email": "alecmei.gubin@yandex.ru",
        "updated_at": "2019-09-25T19:38:00.000000Z",
        "created_at": "2019-09-23T21:26:58.000000Z",
        "role": {
            "id": 1,
            "name": "Администратор"
        }
    }
}
```

{% endtab %}

{% tab title="404 " %}

```javascript
{
    "error": "User not found"
}
```

{% endtab %}
{% endtabs %}

## store

<mark style="color:green;">`POST`</mark> `https://api.url/api/users`

Создание пользователя, не путать с регистрацией.\
Роли: администратор

#### Headers

| Name          | Type   | Description                         |
| ------------- | ------ | ----------------------------------- |
| Authorization | string | Токен, выданный вам при авторизации |

#### Request Body

| Name         | Type    | Description                                                      |
| ------------ | ------- | ---------------------------------------------------------------- |
| surname      | string  | Фамилия пользователя, максимальное кол-во символом 255           |
| name         | string  | Имя пользователя максимальное кол-во символов 255                |
| middle\_name | string  | Отчество пользователя, максимальное кол-во символом 255          |
| email        | string  | E-mail, максимальное кол-во символов 255, должно быть уникальным |
| password     | string  | Пароль, минимальное кол-во символов 8                            |
| role\_id     | integer | ID роли пользователя, по-умолчанию пользователь                  |

{% tabs %}
{% tab title="201 Пользователь был создан" %}

```javascript
{
    "user": {
        "id": 4,
        "name": "Алексей",
        "email": "alecmei.gubin@yandex",
        "updated_at": "2019-09-27T19:37:13.000000Z",
        "created_at": "2019-09-27T19:37:13.000000Z",
        "role": {
            "id": 1,
            "name": "Администратор"
        }
    }
}
```

{% endtab %}

{% tab title="400 Есть ошибки в заполнении полей" %}

```javascript
{
   "errors": {
        "password":["The password must be at least 8 characters."],
        "role_id":["The role id field is required."]
    }
}
```

{% endtab %}
{% endtabs %}

## update

<mark style="color:orange;">`PUT`</mark> `https://api.url/api/users/{id}`

Обновление информации о пользователе.\
Роли: администратор, пользователь (только информацию о себе)

#### Path Parameters

| Name | Type    | Description                    |
| ---- | ------- | ------------------------------ |
| id   | integer | ID редактируемого пользователя |

#### Headers

| Name          | Type   | Description                     |
| ------------- | ------ | ------------------------------- |
| Authorization | string | Токен, выданный при авторизации |

#### Request Body

| Name         | Type    | Description         |
| ------------ | ------- | ------------------- |
| surname      | string  | Фамилия             |
| name         | string  | Имя                 |
| middle\_name | string  | Отчество            |
| email        | string  | E-mail пользователя |
| password     | string  | Пароль пользователя |
| role\_id     | integer | ID роли             |

{% tabs %}
{% tab title="200 " %}

```javascript
{
    "data": {
        "id": 2,
        "name": "Алексей",
        "email": "alecmei.gubin@yandex.ru",
        "updated_at": "2019-09-28T11:37:10.000000Z",
        "created_at": "2019-09-23T21:26:58.000000Z",
        "role": {
            "id": 1,
            "name": "Администратор"
        }
    }
}
```

{% endtab %}

{% tab title="404 " %}

```javascript
{
    "error": "User not found"
}
```

{% endtab %}
{% endtabs %}

## delete

<mark style="color:red;">`DELETE`</mark> `https://api.url/api/users/{id}`

Удаление пользователя.\
Роли: администратор

#### Path Parameters

| Name | Type    | Description                |
| ---- | ------- | -------------------------- |
| id   | integer | ID удаляемого пользователя |

#### Headers

| Name          | Type   | Description                     |
| ------------- | ------ | ------------------------------- |
| Authorization | string | Токен, выданный при авторизации |

{% tabs %}
{% tab title="200 " %}

```javascript
[
    "success"
]
```

{% endtab %}
{% endtabs %}

## getProjects

<mark style="color:green;">`POST`</mark> `https://api.url/api/users/{id}/projects`

#### Path Parameters

| Name | Type    | Description     |
| ---- | ------- | --------------- |
| id   | integer | id пользователя |

#### Headers

| Name          | Type   | Description                     |
| ------------- | ------ | ------------------------------- |
| Authorization | string | Токен, выданный при авторизации |

{% tabs %}
{% tab title="200 " %}

```javascript
{
    "data": [
        {
            "id": 4,
            "name": "Название проекта",
            "purpose": "Истинная цель проекта",
            "expected_result": "Ожидаемый результат проекта",
            "start_date": null,
            "end_date": null,
            "expected_date": null
        },
        {
            "id": 5,
            "name": "Название проекта",
            "purpose": "Истинная цель проекта",
            "expected_result": "Ожидаемый результат проекта",
            "start_date": null,
            "end_date": null,
            "expected_date": null
        }
    ]
}
```

{% endtab %}
{% endtabs %}
