# المصادقة

توفر Rememberizer عدة نقاط نهاية للمصادقة لإدارة حسابات المستخدمين والجلسات. توضح هذه الوثيقة واجهات برمجة التطبيقات المتاحة للمصادقة.

## التسجيل

{% openapi src="<https://4065521171-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKV4TZLzR1jCpM5coRezn%2Fuploads%2Fgit-blob-77b6137eeb641262ec8e531c78123c02b825b865%2Frememberizer_openapi.yml?alt=media&token=5e84eb03-c48b-4980-9792-73172ea64dd4>" path="/auth/signup/" method="post" %}
[rememberizer\_openapi.yml](https://4065521171-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKV4TZLzR1jCpM5coRezn%2Fuploads%2Fgit-blob-77b6137eeb641262ec8e531c78123c02b825b865%2Frememberizer_openapi.yml?alt=media\&token=5e84eb03-c48b-4980-9792-73172ea64dd4)
{% endopenapi %}

### طلبات مثال

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

```bash
curl -X POST \
  https://api.rememberizer.ai/api/v1/auth/signup/ \
  -H "Content-Type: application/json" \
  -d '{
    "email": "user@example.com",
    "password": "secure_password",
    "name": "جون دو",
    "captcha": "recaptcha_response"
  }'
```

{% hint style="info" %}
استبدل `recaptcha_response` باستجابة reCAPTCHA الفعلية.
{% endhint %}
{% endtab %}

{% tab title="JavaScript" %}

```javascript
const signUp = async () => {
  const response = await fetch('https://api.rememberizer.ai/api/v1/auth/signup/', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      email: 'user@example.com',
      password: 'secure_password',
      name: 'جون دو',
      captcha: 'recaptcha_response'
    })
  });
  
  const data = await response.json();
  console.log(data);
};

signUp();
```

{% hint style="info" %}
استبدل `recaptcha_response` باستجابة reCAPTCHA الفعلية.
{% endhint %}
{% endtab %}

{% tab title="Python" %}

```python
import requests
import json

def sign_up():
    headers = {
        "Content-Type": "application/json"
    }
    
    payload = {
        "email": "user@example.com",
        "password": "secure_password",
        "name": "جون دو",
        "captcha": "recaptcha_response"
    }
    
    response = requests.post(
        "https://api.rememberizer.ai/api/v1/auth/signup/",
        headers=headers,
        data=json.dumps(payload)
    )
    
    data = response.json()
    print(data)

sign_up()
```

{% hint style="info" %}
استبدل `recaptcha_response` باستجابة reCAPTCHA الفعلية.
{% endhint %}
{% endtab %}
{% endtabs %}

## تسجيل الدخول

{% openapi src="<https://4065521171-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKV4TZLzR1jCpM5coRezn%2Fuploads%2Fgit-blob-77b6137eeb641262ec8e531c78123c02b825b865%2Frememberizer_openapi.yml?alt=media&token=5e84eb03-c48b-4980-9792-73172ea64dd4>" path="/auth/signin/" method="post" %}
[rememberizer\_openapi.yml](https://4065521171-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKV4TZLzR1jCpM5coRezn%2Fuploads%2Fgit-blob-77b6137eeb641262ec8e531c78123c02b825b865%2Frememberizer_openapi.yml?alt=media\&token=5e84eb03-c48b-4980-9792-73172ea64dd4)
{% endopenapi %}

### طلبات مثال

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

```bash
curl -X POST \
  https://api.rememberizer.ai/api/v1/auth/signin/ \
  -H "Content-Type: application/json" \
  -d '{
    "login": "user@example.com",
    "password": "secure_password",
    "captcha": "recaptcha_response"
  }'
```

{% hint style="info" %}
استبدل `recaptcha_response` باستجابة reCAPTCHA الفعلية.
{% endhint %}
{% endtab %}

{% tab title="JavaScript" %}

```javascript
const signIn = async () => {
  const response = await fetch('https://api.rememberizer.ai/api/v1/auth/signin/', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      login: 'user@example.com',
      password: 'secure_password',
      captcha: 'recaptcha_response'
    })
  });
  
  // تحقق من ملفات تعريف الارتباط الخاصة بالمصادقة في الاستجابة
  if (response.status === 204) {
    console.log("تسجيل الدخول ناجح!");
  } else {
    console.error("فشل تسجيل الدخول!");
  }
};

signIn();
```

{% hint style="info" %}
استبدل `recaptcha_response` باستجابة reCAPTCHA الفعلية.
{% endhint %}
{% endtab %}

{% tab title="Python" %}

```python
import requests
import json

def sign_in():
    headers = {
        "Content-Type": "application/json"
    }
    
    payload = {
        "login": "user@example.com",
        "password": "secure_password",
        "captcha": "recaptcha_response"
    }
    
    response = requests.post(
        "https://api.rememberizer.ai/api/v1/auth/signin/",
        headers=headers,
        data=json.dumps(payload)
    )
    
    if response.status_code == 204:
        print("تسجيل الدخول ناجح!")
    else:
        print("فشل تسجيل الدخول!")

sign_in()
```

{% hint style="info" %}
استبدل `recaptcha_response` باستجابة reCAPTCHA الفعلية.
{% endhint %}
{% endtab %}
{% endtabs %}

## التحقق من البريد الإلكتروني

{% openapi src="<https://4065521171-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKV4TZLzR1jCpM5coRezn%2Fuploads%2Fgit-blob-77b6137eeb641262ec8e531c78123c02b825b865%2Frememberizer_openapi.yml?alt=media&token=5e84eb03-c48b-4980-9792-73172ea64dd4>" path="/auth/verify-email/" method="post" %}
[rememberizer\_openapi.yml](https://4065521171-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKV4TZLzR1jCpM5coRezn%2Fuploads%2Fgit-blob-77b6137eeb641262ec8e531c78123c02b825b865%2Frememberizer_openapi.yml?alt=media\&token=5e84eb03-c48b-4980-9792-73172ea64dd4)
{% endopenapi %}

### طلبات مثال

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

```bash
curl -X POST \
  https://api.rememberizer.ai/api/v1/auth/verify-email/ \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "verification_code": "123456"
  }'
```

{% hint style="info" %}
استبدل `YOUR_JWT_TOKEN` برمز JWT الفعلي الخاص بك واستخدم رمز التحقق المرسل إلى بريدك الإلكتروني.
{% endhint %}
{% endtab %}

{% tab title="JavaScript" %}

```javascript
const verifyEmail = async () => {
  const response = await fetch('https://api.rememberizer.ai/api/v1/auth/verify-email/', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_JWT_TOKEN',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      verification_code: '123456'
    })
  });
  
  if (response.status === 200) {
    console.log("تم التحقق من البريد الإلكتروني بنجاح!");
  } else {
    console.error("فشل التحقق من البريد الإلكتروني!");
  }
};

verifyEmail();
```

{% hint style="info" %}
استبدل `YOUR_JWT_TOKEN` برمز JWT الفعلي الخاص بك واستخدم رمز التحقق المرسل إلى بريدك الإلكتروني.
{% endhint %}
{% endtab %}

{% tab title="Python" %}

```python
import requests
import json

def verify_email():
    headers = {
        "Authorization": "Bearer YOUR_JWT_TOKEN",
        "Content-Type": "application/json"
    }
    
    payload = {
        "verification_code": "123456"
    }
    
    response = requests.post(
        "https://api.rememberizer.ai/api/v1/auth/verify-email/",
        headers=headers,
        data=json.dumps(payload)
    )
    
    if response.status_code == 200:
        print("تم التحقق من البريد الإلكتروني بنجاح!")
    else:
        print("فشل التحقق من البريد الإلكتروني!")

verify_email()
```

{% hint style="info" %}
استبدل `YOUR_JWT_TOKEN` برمز JWT الفعلي الخاص بك واستخدم رمز التحقق المرسل إلى بريدك الإلكتروني.
{% endhint %}
{% endtab %}
{% endtabs %}

## إدارة الرموز

{% openapi src="<https://4065521171-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKV4TZLzR1jCpM5coRezn%2Fuploads%2Fgit-blob-77b6137eeb641262ec8e531c78123c02b825b865%2Frememberizer_openapi.yml?alt=media&token=5e84eb03-c48b-4980-9792-73172ea64dd4>" path="/auth/custom-refresh/" method="post" %}
[rememberizer\_openapi.yml](https://4065521171-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKV4TZLzR1jCpM5coRezn%2Fuploads%2Fgit-blob-77b6137eeb641262ec8e531c78123c02b825b865%2Frememberizer_openapi.yml?alt=media\&token=5e84eb03-c48b-4980-9792-73172ea64dd4)
{% endopenapi %}

### طلبات مثال

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

```bash
curl -X POST \
  https://api.rememberizer.ai/api/v1/auth/custom-refresh/ \
  -b "refresh_token=YOUR_REFRESH_TOKEN"
```

{% hint style="info" %}
تستخدم هذه النقطة النهائية الكوكيز للمصادقة. يجب إرسال رمز التحديث ككوكي.
{% endhint %}
{% endtab %}

{% tab title="JavaScript" %}

```javascript
const refreshToken = async () => {
  const response = await fetch('https://api.rememberizer.ai/api/v1/auth/custom-refresh/', {
    method: 'POST',
    credentials: 'include' // هذا يتضمن الكوكيز في الطلب
  });
  
  if (response.status === 204) {
    console.log("تم تحديث الرمز بنجاح!");
  } else {
    console.error("فشل تحديث الرمز!");
  }
};

refreshToken();
```

{% hint style="info" %}
تستخدم هذه النقطة النهائية الكوكيز للمصادقة. تأكد من أن تطبيقك يتضمن بيانات الاعتماد في الطلب.
{% endhint %}
{% endtab %}

{% tab title="Python" %}

```python
import requests

def refresh_token():
    cookies = {
        "refresh_token": "YOUR_REFRESH_TOKEN"
    }
    
    response = requests.post(
        "https://api.rememberizer.ai/api/v1/auth/custom-refresh/",
        cookies=cookies
    )
    
    if response.status_code == 204:
        print("تم تحديث الرمز بنجاح!")
    else:
        print("فشل تحديث الرمز!")

refresh_token()
```

{% hint style="info" %}
استبدل `YOUR_REFRESH_TOKEN` برمز التحديث الفعلي الخاص بك.
{% endhint %}
{% endtab %}
{% endtabs %}

## تسجيل الخروج

{% openapi src="<https://4065521171-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKV4TZLzR1jCpM5coRezn%2Fuploads%2Fgit-blob-77b6137eeb641262ec8e531c78123c02b825b865%2Frememberizer_openapi.yml?alt=media&token=5e84eb03-c48b-4980-9792-73172ea64dd4>" path="/auth/custom-logout/" method="post" %}
[rememberizer\_openapi.yml](https://4065521171-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKV4TZLzR1jCpM5coRezn%2Fuploads%2Fgit-blob-77b6137eeb641262ec8e531c78123c02b825b865%2Frememberizer_openapi.yml?alt=media\&token=5e84eb03-c48b-4980-9792-73172ea64dd4)
{% endopenapi %}

### طلبات مثال

```bash
curl -X POST \
  https://api.rememberizer.ai/api/v1/auth/custom-logout/
```

{% hint style="info" %}
ستقوم هذه النقطة النهائية بمسح ملفات تعريف الارتباط الخاصة بالمصادقة.
{% endhint %}

```javascript
const logout = async () => {
  const response = await fetch('https://api.rememberizer.ai/api/v1/auth/custom-logout/', {
    method: 'POST',
    credentials: 'include' // هذا يتضمن ملفات تعريف الارتباط في الطلب
  });
  
  if (response.status === 204) {
    console.log("تم تسجيل الخروج بنجاح!");
  } else {
    console.error("فشل تسجيل الخروج!");
  }
};

logout();
```

{% hint style="info" %}
تستخدم هذه النقطة النهائية ملفات تعريف الارتباط للمصادقة. تأكد من أن تطبيقك يتضمن بيانات الاعتماد في الطلب.
{% endhint %}

```python
import requests

def logout():
    session = requests.Session()
    
    response = session.post(
        "https://api.rememberizer.ai/api/v1/auth/custom-logout/"
    )
    
    if response.status_code == 204:
        print("تم تسجيل الخروج بنجاح!")
    else:
        print("فشل تسجيل الخروج!")

logout()
```

{% hint style="info" %}
ستقوم هذه النقطة النهائية بمسح ملفات تعريف الارتباط الخاصة بالمصادقة.
{% endhint %}

{% endtabs %
