> ## Documentation Index
> Fetch the complete documentation index at: https://docs.befailproof.ai/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` (الوضع `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
}
```

هذا الملف مخصص للبريد الإلكتروني الذي تم تعيينه له — سيؤدي تبديل جلسة CLI إلى حساب مختلف إلى إخفاء أي تذكير يخص المستخدم السابق. الإزاحة الافتراضية هي **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` (قراءة/كتابة للمالك فقط). رمز الوصول هو HS256 JWT مدته ساعة واحدة؛ رمز التحديث عبارة عن سلسلة عشوائية معتمة من 256 بت يخزنها الخادم كـ `SHA-256(token)`. يتم الكشف عن إعادة تشغيل رمز التحديث من جانب الخادم ويلغي كل جلسة للمستخدم.

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

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

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

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

**"Could not reach the api-server"** — لا يستطيع CLI فتح اتصال TCP بـ `FAILPROOF_API_URL`. تحقق من شبكتك، أو عيّن `FAILPROOF_API_URL` إذا كنت تقوم بتشغيل خادم API الذي تستضيفه بنفسك.

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

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