Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
kit-policy — Ein flexibles, zusammensetzbares Autorisierungs-Framework für Kit (inspiriert von Action Policy) | Kitploit
Tools/GitLabGitLab/kit-lang/packages/kit-policy
Authentifizierung & AutorisierungDienstprogramme & Frameworks
GitLabkit-lang/packages/kit-policy

kit-policy

Ein flexibles, zusammensetzbares Autorisierungs-Framework für Kit (inspiriert von Action Policy)

Repository anzeigen

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
vor 1 MonatNoch nicht geprüft

kit-policy

Ein flexibles, kombinierbares Autorisierungsframework für Kit, inspiriert von Rubys Action Policy.


[TOC]


Dateien

DateiBeschreibung
.editorconfigEditor-Formatierungskonfiguration
.gitignoreGit-Ignore-Regeln für Build-Artefakte und Abhängigkeiten
.tool-versionsasdf-Toolversionen (Zig, Kit)
LICENSEMIT-Lizenzdatei
README.mdDiese Datei
examples/blog-policy.kitBlog-Autorisierungsbeispiel
kit.tomlPaketmanifest mit Metadaten, Aufgaben und Lint-Konfiguration
src/core.kitKern-Autorisierungshilfsfunktionen
src/error.kitAutorisierungsfehler, Ergebnistypen und Fehlerursachen
src/main.kitPaket-Wurzelmodul
src/scope.kitBereichs-, Prädikats- und Paginierungshilfsfunktionen
tests/policy.test.kitEnd-to-End-Policy-Verhaltenstests

Abhängigkeiten

Keine Kit-Paketabhängigkeiten.

Installation

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

Verwendung

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-Übersicht

Policy.Core

Kern-Hilfsfunktionen für Policy-Funktionen, die Result Bool PolicyError zurückgeben.

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

Vorabprüfungs-Hilfsfunktionen geben Option Bool zurück: Some true erlaubt, Some false verweigert und None fährt mit der Hauptregel fort.

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

Aktionshilfsfunktionen stellen gängige Aktionsgruppen und Aliase bereit.

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

Policy-Kombinationshilfsfunktionen kombinieren mehrere Autorisierungsergebnisse.

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

Policy.Scope

Bereichshilfsfunktionen filtern Sammlungen, bevor Daten an einen Aufrufer zurückgegeben werden.

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

Prädikat-Kombinatoren sind nützlich, um wiederverwendbare Bereichsprüfungen zu erstellen.

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

Paginierungshilfsfunktionen sind 1-indexiert.

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

Policy.Error

Fehler- und Ergebnistypen für Autorisierungsfehler.

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

Hilfsfunktionen werden aus dem Modul exportiert, sodass sie bei Import als PolicyError als Modulfunktionen aufgerufen werden.

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

Design-Notizen

  • Policies sind einfache Funktionen, daher leicht zu testen und zu kombinieren.
  • Autorisierung ist explizit: Hilfsfunktionen geben Result Bool PolicyError zurück, anstatt Ausnahmen zu werfen.
  • Bereiche sind von Policy-Prüfungen getrennt, sodass das Filtern von Listen vor dem Rendern oder Serialisieren erfolgen kann.
  • Übliche Aktionen verwenden Schlüsselwörter wie :index, :show, :create, :update und :destroy.
  • Das Paket ist framework-agnostisch und kann in jedem Kit-Anwendungscode verwendet werden.

Entwicklung

Beispiele ausführen

Führen Sie das Blog-Policy-Beispiel mit dem Interpreter aus:

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

Kompilieren Sie das Beispiel in ein natives Binary:

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

Tests ausführen

Führen Sie die Testsammlung aus:

root@kitploit:~
kit test

Führen Sie die Testsammlung mit Coverage aus:

root@kitploit:~
kit test --coverage

Kit dev ausführen

Führen Sie den standardmäßigen Entwicklungsworkflow aus (Formatieren, Prüfen, Testen):

root@kitploit:~
kit dev

Dies wird:

  1. Quelldateien in src/ formatieren und prüfen
  2. Beispiele in examples/ typüberprüfen
  3. Tests in tests/ mit Coverage ausführen

Interpreter/Compiler-Parität prüfen

Führen Sie Paritätsprüfungen für Beispiele durch:

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

Dokumentation generieren

Generieren Sie API-Dokumentation aus Dokumentationskommentaren:

root@kitploit:~
kit doc

Hinweis: Kit-Quellen mit Dokumentationskommentaren (##) generieren HTML-Dokumente in docs/*.html.

Build-Artefakte bereinigen

Entfernen Sie generierte Dateien, Caches und Build-Artefakte:

root@kitploit:~
kit task clean

Hinweis: Definiert in kit.toml.

Lokale Installation

Um dieses Paket lokal für die Entwicklung zu installieren:

root@kitploit:~
kit install

Dies installiert das Paket nach ~/.kit/packages/@kit/policy/ und macht es für den Import als Kit.Policy in anderen Projekten verfügbar.

Lizenz

Dieses Paket wird unter der MIT-Lizenz veröffentlicht – siehe LICENSE für Details.

Tool herunterladen
tests/types.test.kitPolicy-Typ- und Hilfsfunktionstests