Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
kit-policy — Un framework di autorizzazione flessibile e componibile per Kit (ispirato a Action Policy) | Kitploit
Strumenti/GitLabGitLab/kit-lang/packages/kit-policy
Autenticazione e AutorizzazioneUtilità e Framework
GitLabkit-lang/packages/kit-policy

kit-policy

Un framework di autorizzazione flessibile e componibile per Kit (ispirato a Action Policy)

Vedi Repository

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
1 mese faNon ancora revisionato

kit-policy

Un framework di autorizzazione flessibile e componibile per Kit, ispirato a Action Policy di Ruby.


[TOC]


File

FileDescrizione
.editorconfigConfigurazione di formattazione dell'editor
.gitignoreRegole Git ignore per artefatti di build e dipendenze
.tool-versionsVersioni degli strumenti asdf (Zig, Kit)
LICENSEFile di licenza MIT
README.mdQuesto file
examples/blog-policy.kitEsempio di autorizzazione per un blog
kit.tomlManifest del pacchetto con metadati, attività e configurazione lint
src/core.kitHelper di autorizzazione centrali
src/error.kitErrori di autorizzazione, tipi di risultato e motivi di fallimento
src/main.kitModulo radice del pacchetto
src/scope.kitHelper per ambiti, predicati e paginazione
tests/policy.test.kit

Dipendenze

Nessuna dipendenza da pacchetti Kit.

Installazione

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

Utilizzo

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

Panoramica dell'API

Policy.Core

Helper centrali per funzioni policy che restituiscono 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

Gli helper di pre-controllo restituiscono Option Bool: Some true permette, Some false nega, None prosegue verso la regola principale.

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

Gli helper per le azioni forniscono gruppi di azioni comuni e alias.

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

Gli helper di composizione delle policy combinano diversi risultati di autorizzazione.

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

Policy.Scope

Gli helper per gli ambiti filtrano le collezioni prima di restituire i dati a un chiamante.

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

I combinatori di predicati sono utili per costruire controlli di ambito riutilizzabili.

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

Gli helper di paginazione sono a indice 1 (1-indexed).

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

Policy.Error

Tipi di errore e risultato per i fallimenti di autorizzazione.

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

Le funzioni helper sono esportate dal modulo; quando importate come PolicyError vengono chiamate come funzioni del modulo.

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

Note di Progettazione

  • Le policy sono semplici funzioni, quindi facili da testare e comporre.
  • L'autorizzazione è esplicita: gli helper restituiscono Result Bool PolicyError invece di lanciare eccezioni.
  • Gli ambiti sono separati dai controlli delle policy in modo che il filtraggio delle liste possa avvenire prima del rendering o della serializzazione.
  • Le azioni comuni usano keyword come :index, :show, :create, :update, e :destroy.
  • Il pacchetto è indipendente dal framework e può essere usato con qualsiasi applicazione Kit.

Sviluppo

Esecuzione degli Esempi

Esegui l'esempio di policy per un blog con l'interprete:

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

Compila l'esempio in un binario nativo:

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

Esecuzione dei Test

Esegui la suite di test:

root@kitploit:~
kit test

Esegui la suite di test con copertura:

root@kitploit:~
kit test --coverage

Esecuzione di kit dev

Esegui il flusso di lavoro di sviluppo standard (formatta, controlla, testa):

root@kitploit:~
kit dev

Questo eseguirà:

  1. Formatta e controlla i file sorgente in src/
  2. Controlla i tipi negli esempi in examples/
  3. Esegue i test in tests/ con copertura

Verifica della Parità Interprete/Compilatore

Esegui i controlli di parità per gli esempi:

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

Generazione della Documentazione

Genera la documentazione dell'API dai commenti doc:

root@kitploit:~
kit doc

Nota: I sorgenti Kit con commenti doc (##) genereranno documenti HTML in docs/*.html.

Pulizia degli Artefatti di Build

Rimuovi file generati, cache e artefatti di build:

root@kitploit:~
kit task clean

Nota: Definito in kit.toml.

Installazione Locale

Per installare questo pacchetto localmente per lo sviluppo:

root@kitploit:~
kit install

Questo installa il pacchetto in ~/.kit/packages/@kit/policy/, rendendolo disponibile per l'import come Kit.Policy in altri progetti.

Licenza

Questo pacchetto è rilasciato sotto la licenza MIT - consulta LICENSE per i dettagli.

Scarica lo strumento
Test end-to-end del comportamento delle policy
tests/types.test.kitTest dei tipi e degli helper delle policy