> 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/avtorizaciya.md).

# Авторизация

Для того, чтобы начать работу с системой, вам необходимо авторизоваться и получить bearer-токен, который позволит в дальнейшем вам использовать методы, реализованные в системе.

### Авторизация

Для авторизации используется логин и пароль, введенный вами при регистрации. В ответ вы получите bearer-токен.

## register

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

Регистрация на сервере

#### Request Body

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

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

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

## Login

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

#### Request Body

| Name     | Type   | Description         |
| -------- | ------ | ------------------- |
| password | string | Пароль пользователя |
| email    | string | E-mail пользователя |

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

```javascript
{
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC8xMjcuMC4wLjE6ODAwMFwvYXBpXC9hdXRoXC9sb2dpbiIsImlhdCI6MTU2OTYxMTI3MywiZXhwIjoxNTY5NjE0ODczLCJuYmYiOjE1Njk2MTEyNzMsImp0aSI6Im9qSmxvM1M3ZXNiRFhnRXUiLCJzdWIiOjIsInBydiI6Ijg3ZTBhZjFlZjlmZDE1ODEyZmRlYzk3MTUzYTE0ZTBiMDQ3NTQ2YWEifQ.a--hdV6uEHUCP_MIENRWqN7XEyrsL6x-34k7EQTrTlg",
    "token_type": "bearer",
    "expires_in": 3600
}
```

{% endtab %}

{% tab title="401 " %}

```javascript
{
    "error": "Unauthorized"
}
```

{% endtab %}
{% endtabs %}

## refresh

<mark style="color:green;">`POST`</mark> `http://api.url/api/auth/refresh`

Метод обновляет токен

#### Headers

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

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

```javascript
{
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC8xMjcuMC4wLjE6ODAwMFwvYXBpXC9hdXRoXC9yZWZyZXNoIiwiaWF0IjoxNTY5NjYzMjI2LCJleHAiOjE1Njk2NjY4NDAsIm5iZiI6MTU2OTY2MzI0MCwianRpIjoiRno0U0RvdmxUaUJHdlh4bCIsInN1YiI6MiwicHJ2IjoiODdlMGFmMWVmOWZkMTU4MTJmZGVjOTcxNTNhMTRlMGIwNDc1NDZhYSJ9.ChuXbud1jPJkCDCD7nTn8Gi7E9pyQ6ZyMxdPxDTUHt0",
    "token_type": "bearer",
    "expires_in": 3600
}
```

{% endtab %}

{% tab title="400 " %}

```javascript
{
    "status": "Token is Expired"
}
```

{% endtab %}
{% endtabs %}

## me

<mark style="color:green;">`POST`</mark> `http://api.url/api/auth/me`

Получение информации о себе

#### Headers

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

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

```javascript
{
    "data": {
        "id": 1,
        "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 %}
{% endtabs %}

## logout

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

Выход из системы, токен перестает быть активным

#### Headers

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

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

```javascript
{
    "message": "Successfully logged out"
}
```

{% endtab %}
{% endtabs %}
