> ## Documentation Index
> Fetch the complete documentation index at: https://exosphere-auto-translate-docs-20260623-1106.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Auth

title: تسجيل الدخول
description: "قم بتسجيل الدخول إلى FailproofAI من سطر الأوامر لتفعيل التنبيهات والميزات المخصصة"
------------------------------------------------------------------------------------------------

```bash theme={null}
failproofai auth login    # email + one-time code
failproofai auth logout   # revoke this session
failproofai auth whoami   # print the signed-in identity
```

صيغة العلم القديم `--login` / `--logout` / `--whoami` لا تزال مقبولة كاسم مستعار للتوافق مع الإصدارات السابقة.

المصادقة اختيارية. السياسات والعرض البياني وصفحة `/audit` وكل ميزة محلية أخرى تعمل بالطريقة ذاتها سواء قمت بتسجيل الدخول أم لا. واجهة تسجيل الدخول موجودة حتى تتمكن الميزات التي **تحتاج** إلى هوية مستقرة (تنبيهات إعادة التدقيق اليوم، والمزيد في المستقبل) من وجود مكان تستند إليه.

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

```bash theme={null}
failproofai auth login
```

يطلب بريدك الإلكتروني، ويرسل رمز لمرة واحدة مكون من 6 أرقام إلى هذا العنوان، ويطلب الرمز، وعند النجاح يكتب `~/.failproofai/auth.json` (mode `0600`). نفس الجلسة تصبح مرئية بعد ذلك في العرض البياني داخل التطبيق — النقر على `[ set a reminder ]` على `/audit` سيظهرك كمسجل دخول.

يعرض العرض البياني نفس التدفق كمربع حوار مشروط على `/audit` للمستخدمين الذين لا يستخدمون سطر الأوامر.

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

```bash theme={null}
failproofai auth logout
```

يلغي الجلسة الحالية على الخادم ويحذف `~/.failproofai/auth.json`. إذا كان خادم api غير قابل للوصول، يتم إزالة الملف المحلي على أي حال — النية المحلية لتسجيل الخروج تفوز دائماً.

## فحص الهوية

```bash theme={null}
failproofai auth whoami
```

يطبع `<email> (<user uuid>)` ويخرج 0 عندما توجد جلسة صحيحة، أو `not signed in` ويخرج 1 بخلاف ذلك. ينعش رمز الوصول بصمت في الخلفية إذا كان على بعد دقيقة واحدة من انتهائه الصلاحية.

## تنبيه إعادة التدقيق المستمر

عندما تنقر على **`[ set a reminder ]`** على صفحة `/audit` (أو تسجل الدخول عبر المربع الحواري الذي يحرسه الزر)، يكتب العرض البياني ملف مرافق صغير على `~/.failproofai/next-audit.json`:

```json theme={null}
{
  "next_audit_at": 1780765200,
  "user_email": "you@example.com",
  "set_at": 1780160574
}
```

هذا الملف محدد للبريد الإلكتروني الذي تم تعيينه له — تبديل جلسة سطر الأوامر إلى حساب مختلف يخفي أي تنبيه ينتمي للمستخدم السابق. الإزاحة الافتراضية هي **7 أيام**، قابلة للتكوين لاحقاً عندما يتم إطلاق جدول المهام. تم الإنشاء برمز `0600` مثل `auth.json`.

نقطة نهاية `/api/auth/reminder` للعرض البياني تعرض `GET` (قراءة)، `POST` (تعيين / إعادة جدولة)، و `DELETE` (مسح) وتتطلب جلسة نشطة.

## ما في `~/.failproofai/auth.json`

```json theme={null}
{
  "access_token": "eyJhbGc…",
  "refresh_token": "9ede3e…",
  "access_expires_at": 1780160574,
  "refresh_expires_at": 1782748974,
  "user": { "id": "<uuid>", "email": "you@example.com" }
}
```

تم الإنشاء برمز `0600` (قراءة/كتابة خاصة بالمالك). رمز الوصول هو JWT مدة HS256 بمدة ساعة واحدة؛ رمز التحديث هو سلسلة عشوائية معتمة بحجم 256 بت يخزنها الخادم كـ `SHA-256(token)`. يتم الكشف عن إعادة تشغيل رمز التحديث من جانب الخادم وإلغاء كل جلسات المستخدم.

## متغيرات البيئة

| المتغير                | الافتراضي                    | الغرض                                                                                |
| ---------------------- | ---------------------------- | ------------------------------------------------------------------------------------ |
| `FAILPROOF_API_URL`    | `https://api.befailproof.ai` | تجاوز عنوان URL الأساسي لخادم api. مفيد للتطوير المحلي مقابل خادم api مستضاف ذاتياً. |
| `FAILPROOFAI_AUTH_DIR` | `~/.failproofai`             | تجاوز حيث يتم تخزين `auth.json`. في الأساس للاختبارات.                               |

انظر [متغيرات البيئة](/ar/cli/environment-variables) للقائمة الكاملة.

## استكشاف الأخطاء

**"لم يتمكن من الوصول إلى خادم api"** — لا يمكن لسطر الأوامر فتح اتصال TCP بـ `FAILPROOF_API_URL`. تحقق من شبكتك، أو عيّن `FAILPROOF_API_URL` إذا كنت تقوم بتشغيل خادم api مستضاف ذاتياً.

**"تم تجاوز حد المعدل"** — عدد كبير جداً من محاولات تسجيل الدخول في نافذة 15 دقيقة لهذا البريد الإلكتروني (5/بريد) أو IP (20/IP)، أو فترة انتظار إعادة إرسال 30 ثانية بعد الطلب السابق للبريد الإلكتروني ذاته. تتضمن رسالة الخطأ نافذة إعادة المحاولة بالثواني.

**تم رفض الرمز** — كانت OTP خاطئة أو انتهت صلاحيتها أو ضربت الصف قفل التخمين الخاطئ 5 مرات. شغّل `failproofai auth login` مرة أخرى لطلب رمز جديد.
