إزاي أجبر المستخدمين يغيروا كلمة السر كل فترة معينة؟

Viewed 54

عندي مستخدمين كتير شغالين على النظام، والإدارة طالبة منا نلتزم بسياسة إن كل واحد يغير كلمة السر بتاعته كل فترة (عندنا 45 يوم بس ممكن المدة تتغير لو احتجت).

اللي محتاجه إن النظام لوحده يبص على المستخدمين، وأي حد عدا عليه أكتر من المدة دي من غير ما يغير الباسوورد، يتعلّم تلقائي إنه لازم يغيرها، وأول ما يحاول يدخل تاني يطلبها منه يغير قبل ما يكمل.

طبعا مش هقدر أقعد كل شوية أفتح المستخدمين يدوي وأدوّر على اللي مر عليه فترة. في حاجة جاهزة تخليها تشتغل لوحدها على فترات؟

1 Answers

فيه إجراء جاهز اسمه EAForceUsersToChangePassword بيعمل كل اللي انت محتاجه. الفكرة بتاعته إنه بيمر على المستخدمين النشطين (اللي مش متمنوع عليهم الدخول) ويعلّم على كل واحد عدا عليه أكتر من عدد أيام معين من غير ما يغير الباسوورد، يعلّم على خانة لازم يغيّر كلمة السر. أول ما المستخدم يحاول يدخل تاني، النظام نفسه هيجبره يحط كلمة سر جديدة قبل ما يكمل.

الاستخدام الموصى بيه (مهم):

الإجراء ده مش الغرض منه إنك تشغّله بإيدك كل فترة. الأفضل تربطه بـ مهمة مجدولة (Task Schedule) تشتغل تلقائي مثلاً كل يوم بليل، وكده النظام يفضل بيراجع المستخدمين على طول، ومحدش يفوّت المدة. لو شغّلته يدوي بس، هيعلّم على اللي خلصوا المدة لحد لحظة تشغيلك، وبعد كده اللي يخلصوا المدة هيفضلوا ماشيين عادي لحد ما تفكر تشغّله تاني.

الإعداد بالخطوات:

  1. ادخل على شاشة المهام المجدولة (Task Schedule) واعمل واحدة جديدة.
  2. خلي نوع المهمة Action.
  3. في اسم الإجراء (Class Name) حط: com.namasoft.infor.domainbase.util.actions.EAForceUsersToChangePassword
  4. ظبط الـ Cron إنها تشتغل كل يوم في وقت هادي (مثلاً 2 بعد منتصف الليل).
  5. لو عايز تغير المدة من الـ 45 يوم الافتراضية، حط الرقم اللي انت عايزه في parameter2 (مثلاً 30 لو عايزها كل شهر، أو 90 لو كل 3 شهور).
  6. لو محتاج شرط مخصص مش الافتراضي (مثلاً تستثني يوزرز معينين، أو تخص قسم معين)، تقدر تحط استعلام SQL في parameter1، بس خلي بالك لازم يرجّع id المستخدم في أول عمود.

ملاحظات مهمة:

  • لما تستخدم استعلام مخصص واحتجت تستفيد من قيمة المدة اللي حطيتها في parameter2، حط في الاستعلام النص @days@ في مكان عدد الأيام، والنظام هيستبدله بقيمتك.
  • لو حطيت استعلام مخصص مش بيستخدم @days@، سيب parameter2 فاضي عشان النظام يقولك إن مفيش معنى ليه.
  • المستخدم بيتمسحله العلامة لوحدها لما يدخل ويغير كلمة السر فعلاً، وبيتسجل تاريخ التغيير الجديد. يعني مفيش حاجة تعملها انت بعد كده، الدورة بتقفل لوحدها.

مثال JSON جاهز للاستيراد

ده مثال لمهمة مجدولة بتشتغل كل يوم الساعة 2 صباحًا وبتجبر اليوزرز يغيروا كلمة السر بعد 45 يوم:

{
    "TaskSchedule": [
        {
            "code": "force-password-change",
            "scheduleType": "Action",
            "usingCron": true,
            "scheduleInfo": {
                "timeMinute": "0",
                "timeHour": "2",
                "timeDayOfMonth": "*",
                "timeMonth": "*",
                "timeDayOfWeek": "*"
            },
            "className": "com.namasoft.infor.domainbase.util.actions.EAForceUsersToChangePassword",
            "parameter2": "45"
        }
    ]
}

لو عايز تغير المدة، عدّل قيمة parameter2 بس وخلاص.