Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
kit-policy — إطار عمل تفويض مرن وقابل للتكوين لـ Kit (مستوحى من Action Policy) | Kitploit
أدوات/GitLabGitLab/kit-lang/packages/kit-policy
المصادقة والترخيصالأدوات والمكونات
GitLabkit-lang/packages/kit-policy

kit-policy

إطار عمل تفويض مرن وقابل للتكوين لـ Kit (مستوحى من Action Policy)

عرض المستودع
منذ شهر واحدلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

kit-policy

إطار عمل للتفويض مرن وقابل للتكوين لـ Kit، مستوحى من Action Policy الخاص بـ Ruby.


[TOC]


الملفات

الملفالوصف
.editorconfigإعدادات تنسيق المحرر
.gitignoreقواعد تجاهل Git لمخرجات البناء والتبعيات
.tool-versionsإصدارات أدوات asdf (Zig, Kit)
LICENSEملف ترخيص MIT
README.mdهذا الملف
examples/blog-policy.kitمثال لسياسة المدونة
kit.tomlبيان الحزمة مع البيانات الوصفية والمهام وتكوين lint
src/core.kitمساعدات التفويض الأساسية
src/error.kitأخطاء التفويض، أنواع النتائج، وأسباب الفشل
src/main.kitالوحدة الجذرية للحزمة
src/scope.kitمساعدات النطاق، المسند، والترقيم
tests/policy.test.kitاختبارات سلوك السياسة الشاملة

التبعيات

لا تبعيات لحزمة Kit.

التثبيت

root@kitploit:~
kit add gitlab.com/kit-lang/packages/kit-policy.git

الاستخدام

root@kitploit:~
import Kit.Policy.Core as PolicyCore
import Kit.Policy.Error as PolicyError
import Kit.Policy.Scope as PolicyScope

type Post = {id: Int, author-id: Int, published?: Bool, title: String}
type User = {id: Int, admin?: Bool}
type AuthContext = {user: User}

post-policy = fn(post, ctx, action) =>
  if ctx.user.admin? then
    PolicyCore.allow
  else
    match PolicyCore.resolve-alias action
      | :show -> PolicyCore.allow-if post.published?
      | :update -> PolicyCore.allow-if (ctx.user.id == post.author-id)
      | :destroy -> PolicyCore.allow-if (ctx.user.id == post.author-id)
      | _ -> PolicyCore.no-rule action

post-scope = fn(posts, ctx) =>
  if ctx.user.admin? then
    posts
  else
    posts |>> List.filter (fn(post) => post.published?)

main = fn =>
  user = {id: 1, admin?: false}
  ctx = {user: user}
  post = {id: 1, author-id: 1, published?: true, title: "Hello"}
  posts = [post]

  if PolicyCore.can-with? post-policy post ctx :update then
    println "Can update post"
  else
    println "Cannot update post"

  visible-posts = PolicyScope.scope-with post-scope posts ctx
  page = PolicyScope.paginate 1 10 visible-posts
  info = PolicyScope.pagination-info 1 10 visible-posts

  println "Visible posts: ${page}"
  println "Pages: ${info.pages}"

  err = PolicyError.not-authorized "Post" :update "not the author"
  println (PolicyError.message err)

main

نظرة عامة على API

Policy.Core

مساعدات أساسية لدوال السياسة التي ترجع Result Bool PolicyError.

root@kitploit:~
PolicyCore.can-with? policy resource context action
PolicyCore.may-with? policy resource context action

PolicyCore.allow
PolicyCore.deny
PolicyCore.allow-if condition
PolicyCore.deny-if condition
PolicyCore.no-rule action
PolicyCore.allow-or-deny condition resource-name reason action

مساعدات التحقق الأولي ترجع Option Bool: Some true يسمح، Some false يمنع، و None يستمر إلى القاعدة الرئيسية.

root@kitploit:~
PolicyCore.admin-bypass is-admin? ctx
PolicyCore.owner-check is-owner? resource ctx
PolicyCore.first-pre-check [check1, check2, check3]

مساعدات الإجراءات توفر مجموعات إجراءات شائعة وأسماء مستعارة.

root@kitploit:~
PolicyCore.crud-actions
PolicyCore.read-actions
PolicyCore.write-actions

PolicyCore.read-action? action
PolicyCore.write-action? action

PolicyCore.resolve-alias :new     # :create
PolicyCore.resolve-alias :edit    # :update
PolicyCore.resolve-alias :delete  # :destroy
PolicyCore.resolve-alias :view    # :show

مساعدات تركيب السياسة تجمع عدة نتائج تفويض.

root@kitploit:~
PolicyCore.all-allowed? [result1, result2, result3]
PolicyCore.any-allowed? [result1, result2, result3]

Policy.Scope

مساعدات النطاق لتصفية المجموعات قبل إرجاع البيانات للمتصل.

root@kitploit:~
PolicyScope.scope-with scope-fn items ctx
PolicyScope.filter-by predicate items

PolicyScope.is-owned-by? get-owner-id get-user-id item ctx
PolicyScope.is-published? get-published item
PolicyScope.is-in-state? get-state target-state item
PolicyScope.is-admin-or? check-admin fallback-check ctx item

التابعات المسندية مفيدة لبناء فحوصات نطاق قابلة لإعادة الاستخدام.

root@kitploit:~
PolicyScope.both? pred1 pred2 item
PolicyScope.either? pred1 pred2 item
PolicyScope.not-matching? pred item

مساعدات الترقيم تستند إلى الفهرسة من 1.

root@kitploit:~
page1 = PolicyScope.paginate 1 10 items
pages = PolicyScope.total-pages 10 items
info = PolicyScope.pagination-info 1 10 items

Policy.Error

أنواع الأخطاء والنتائج لأعطال التفويض.

root@kitploit:~
type PolicyError =
  | NotAuthorized {resource: String, action: Keyword, reason: String}
  | RuleNotFound {action: Keyword}
  | ContextMissing {field: String}
  | PolicyNotFound {resource-type: String}
  | CustomError String

type FailureReason = FailureReason {
  policy: String,
  action: Keyword,
  details: String
}

type AuthResult =
  | Allowed
  | Denied String

الدوال المساعدة مصدرة من الوحدة، لذلك عند استيرادها باسم PolicyError يتم استدعاؤها كدوال وحدة.

root@kitploit:~
PolicyError.not-authorized resource action reason
PolicyError.rule-not-found action
PolicyError.context-missing field
PolicyError.policy-not-found resource-type
PolicyError.custom message

PolicyError.message err
PolicyError.kind err
PolicyError.is-not-authorized? err
PolicyError.is-rule-not-found? err

PolicyError.new policy action
PolicyError.with-details policy action details
PolicyError.policy reason
PolicyError.action reason
PolicyError.details reason
PolicyError.format reason

PolicyError.allowed
PolicyError.denied reason
PolicyError.is-allowed? result
PolicyError.is-denied? result
PolicyError.reason result
PolicyError.to-result resource-name action result

ملاحظات التصميم

  • السياسات هي دوال عادية، لذا يسهل اختبارها وتركيبها.
  • التفويض صريح: المساعدات ترجع Result Bool PolicyError بدلاً من رمي الاستثناءات.
  • النطاقات منفصلة عن فحوصات السياسة بحيث يمكن تصفية القوائم قبل العرض أو التسلسل.
  • الإجراءات الشائعة تستخدم كلمات مفتاحية مثل :index, :show, :create, :update, و :destroy.
  • الحزمة غير مرتبطة بإطار معين ويمكن استخدامها مع أي كود لتطبيقات Kit.

التطوير

تشغيل الأمثلة

تشغيل مثال سياسة المدونة باستخدام المفسر:

root@kitploit:~
kit run examples/blog-policy.kit

تجميع المثال إلى ثنائي أصلي:

root@kitploit:~
kit build examples/blog-policy.kit && ./blog-policy

تشغيل الاختبارات

تشغيل مجموعة الاختبارات:

root@kitploit:~
kit test

تشغيل مجموعة الاختبارات مع تغطية:

root@kitploit:~
kit test --coverage

تشغيل kit dev

تشغيل سير العمل التطويري القياسي (تنسيق، فحص، اختبار):

root@kitploit:~
kit dev

سيقوم هذا بما يلي:

  1. تنسيق وفحص ملفات المصدر في src/
  2. فحص أنواع الأمثلة في examples/
  3. تشغيل الاختبارات في tests/ مع تغطية

التحقق من توافق المفسر/المترجم

تشغيل فحوصات التطابق للأمثلة:

root@kitploit:~
kit parity --failures-only

توليد التوثيق

توليد توثيق API من تعليقات التوثيق:

root@kitploit:~
kit doc

ملاحظة: مصادر Kit التي تحتوي على تعليقات توثيق (##) ستولد مستندات HTML في docs/*.html.

تنظيف مخرجات البناء

إزالة الملفات المولدة وذاكرة التخزين المؤقت ومخرجات البناء:

root@kitploit:~
kit task clean

ملاحظة: معرفة في kit.toml.

التثبيت المحلي

لتثبيت هذه الحزمة محلياً للتطوير:

root@kitploit:~
kit install

هذا يقوم بتثبيت الحزمة في ~/.kit/packages/@kit/policy/، مما يجعلها متاحة للاستيراد كـ Kit.Policy في مشاريع أخرى.

الترخيص

هذه الحزمة مرخصة بموجب رخصة MIT - راجع LICENSE للتفاصيل.

تنزيل الأداة
tests/types.test.kit
اختبارات أنواع السياسة والمساعدات