تخطَّ إلى المحتوى

الأمان

flowchart LR
    subgraph PS["PERMISSION SETS"]
        subgraph ADMIN["FTS_App_Access<br/>(Administrators)"]
            A1["App: FlexibleTeamShare"]
            A2["Tabs: All visible"]
            A3["Apex: All classes"]
            A4["Objects: Full CRUD + MAR"]
            A5["Team_Sharing_Config: CRUD"]
        end

        subgraph USER["FTS_Data_Access<br/>(End Users)"]
            U1["ObjectTeamMember__c: CRUD"]
            U2["Team_Sharing_Config__c: Read"]
            U3["Apex: Controller only"]
            U4["No View/Modify All Records"]
        end
    end
Permission Setالجمهورالقدرات
FTS_App_Accessالمسؤولونوصول كامل للتطبيق، جميع علامات التبويب، جميع فئات Apex، CRUD كامل + Modify All Records على الكائنات، CRUD على Team_Sharing_Config
FTS_Data_Accessالمستخدمون النهائيونCRUD على ObjectTeamMember__c، قراءة Team_Sharing_Config__c، فئات Apex للتحكم فقط، بدون View/Modify All Records
flowchart TB
    START["Who can manage<br/>team members?"] --> CHECK1{"System<br/>Administrator?"}
    CHECK1 -->|Yes| ALLOWED["ALLOWED"]
    CHECK1 -->|No| CHECK2{"Record<br/>Owner?"}
    CHECK2 -->|Yes| ALLOWED
    CHECK2 -->|No| CHECK3{"Team Member with<br/>Role = Manager<br/>or Owner?"}
    CHECK3 -->|Yes| ALLOWED
    CHECK3 -->|No| DENIED["DENIED"]

تحدد طريقة isCurrentUserManager() من يمكنه إدارة أعضاء الفريق:

  1. مسؤولو النظام — مسموح دائمًا
  2. مالكو السجلات — مسموح دائمًا
  3. أعضاء فريق بدور Manager/Owner — مسموح
  4. الجميع الآخرون — ممنوع
flowchart LR
    subgraph CRUD["CRUD/FLS Checks"]
        C["Create"] --> C1["isCreateable()"]
        U["Update"] --> U1["isUpdateable() +<br/>isCurrentUserManager()"]
        D["Delete"] --> D1["isDeletable() +<br/>isCurrentUserManager()"]
        R["Read"] --> R1["WITH USER_MODE"]
    end

    subgraph LOC["Execution Mode"]
        L1["Enforced in Controller"]
        L2["Elevated Access<br/>(without sharing)"]
        L3["Respects OWD/Sharing"]
    end

    C1 --> L1
    U1 --> L2
    D1 --> L2
    R1 --> L3
العمليةفحص الأمانالتنفيذ
إنشاء عضو فريقSchema.sObjectType.ObjectTeamMember__c.isCreateable()تطبيق في وحدة التحكم
تحديث عضو فريقisUpdateable() + isCurrentUserManager()وصول مرتفع (without sharing) بعد التفويض
حذف عضو فريقisDeletable() + isCurrentUserManager()وصول مرتفع (without sharing) بعد التفويض
قراءة أعضاء الفريقWITH USER_MODE / sharing modelيحترم OWD/المشاركة
المدخلالتحققالموقع
recordIdليس فارغًا، تنسيق معرف Salesforce صالحوحدة التحكم
userIdليس فارغًا، معرف مستخدم صالحوحدة التحكم
accessLevelليس فارغًا، قيمة قائمة منسدلة صالحةوحدة التحكم + Picklist
roleليس فارغًا، قيمة قائمة منسدلة صالحةوحدة التحكم + Picklist
endDateيجب أن يكون تاريخًا مستقبليًا أو nullوحدة التحكم + Validation Rule
objectApiNameمشتق من معرف Salesforce (ليس مدخل مستخدم)وحدة التحكم
القاعدةالكائنالوصف
End_Date_Cannot_Be_PastObjectTeamMember__cيمنع تعيين تاريخ انتهاء في الماضي
flowchart LR
    subgraph INPUT["ObjectTeamMember__c<br/>Access_Level__c"]
        I1["Read Only"]
        I2["Read/Write"]
    end

    subgraph OUTPUT["[Object]Share<br/>AccessLevel"]
        O1["Read"]
        O2["Edit"]
    end

    I1 --> O1
    I2 --> O2

نظرة عامة كاملة على الأمان

Section titled “نظرة عامة كاملة على الأمان”
flowchart TB
    subgraph PERM["Permission Sets"]
        PS1["FTS_App_Access<br/>Administrators"]
        PS2["FTS_Data_Access<br/>End Users"]
    end

    subgraph ACCESS["Access Control"]
        AC1["System Admin"]
        AC2["Record Owner"]
        AC3["Manager/Owner Role"]
    end

    subgraph SHARE["Sharing Model"]
        SH1["ObjectTeamMember__Share"]
        SH2["[Object]Share"]
    end

    subgraph LEVELS["Access Levels"]
        LV1["Read Only → Read"]
        LV2["Read/Write → Edit"]
    end

    PERM --> ACCESS
    ACCESS --> SHARE
    SHARE --> LEVELS

أفضل ممارسات الأمان المطبقة

Section titled “أفضل ممارسات الأمان المطبقة”
الضبطالحالةالتنفيذ
فحوصات CRUD في وحدات التحكممطبقisAccessible()، isCreateable()، isUpdateable()، isDeletable()
تطبيق FLSمطبقPermission Sets تتحكم في الوصول للحقول
منع حقن SOQLمطبقمتغيرات ربط لمدخلات المستخدم، قائمة بيضاء لأسماء الكائنات
نموذج المشاركةمطبقwith sharing على وحدات التحكم، without sharing فقط حيث موثق
التحقق من المدخلاتمطبقفحوصات null، التحقق من التنسيق، قواعد العمل
منع XSSمطبقإطار عمل LWC يتعامل مع ترميز المخرجات
الفحصالنتيجة
استدعاءات HTTPلا شيء — الحزمة لا تقوم باستدعاءات خارجية
Named Credentialsغير مستخدم
External Objectsغير مستخدم
Remote Site Settingsغير مطلوب
انتهاكات CSPنجح — لا توجد انتهاكات Content-Security-Policy