Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Ferramentas/GitLabGitLab/kit-lang/packages/kit-policy
Autenticação e AutorizaçãoUtilitários e Frameworks
GitLabkit-lang/packages/kit-policy

kit-policy

Um framework de autorização flexível e componível para Kit (inspirado pelo Action Policy)

Ver Repositório

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
há 1 mêsAinda não revisado

kit-policy

Um framework de autorização flexível e componível para Kit, inspirado no Action Policy do Ruby.


[TOC]


Arquivos

ArquivoDescrição
.editorconfigConfiguração de formatação do editor
.gitignoreRegras de ignorar do Git para artefatos de build e dependências
.tool-versionsVersões de ferramentas asdf (Zig, Kit)
LICENSEArquivo de licença MIT
README.mdEste arquivo
examples/blog-policy.kitExemplo de autorização de blog
kit.tomlManifesto do pacote com metadados, tarefas e configuração de lint
src/core.kitAuxiliares principais de autorização
src/error.kitErros de autorização, tipos de resultado e motivos de falha
src/main.kitMódulo raiz do pacote
src/scope.kitAuxiliares de escopo, predicado e paginação
tests/policy.test.kit

Dependências

Nenhuma dependência de pacote Kit.

Instalação

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

Uso

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

Visão Geral da API

Policy.Core

Auxiliares principais para funções de política que retornam 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

Auxiliares de pré-verificação retornam Option Bool: Some true permite, Some false nega e None continua para a regra principal.

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

Auxiliares de ação fornecem grupos de ação comuns e aliases.

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

Auxiliares de composição de política combinam vários resultados de autorização.

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

Policy.Scope

Auxiliares de escopo filtram coleções antes de retornar dados para um chamador.

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

Combinadores de predicado são úteis para construir verificações de escopo reutilizáveis.

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

Auxiliares de paginação são indexados a partir de 1.

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

Policy.Error

Tipos de erro e resultado para falhas de autorização.

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

Funções auxiliares são exportadas do módulo, portanto, quando importadas como PolicyError, são chamadas como funções do módulo.

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

Notas de Design

  • Políticas são funções simples, portanto fáceis de testar e compor.
  • A autorização é explícita: auxiliares retornam Result Bool PolicyError em vez de lançar exceções.
  • Escopos são separados das verificações de política para que a filtragem de lista possa ocorrer antes da renderização ou serialização.
  • Ações comuns usam palavras-chave como :index, :show, :create, :update e :destroy.
  • O pacote é independente de framework e pode ser usado com qualquer código de aplicação Kit.

Desenvolvimento

Executando Exemplos

Execute o exemplo de política de blog com o interpretador:

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

Compile o exemplo para um binário nativo:

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

Executando Testes

Execute a suíte de testes:

root@kitploit:~
kit test

Execute a suíte de testes com cobertura:

root@kitploit:~
kit test --coverage

Executando kit dev

Execute o fluxo de desenvolvimento padrão (formatar, verificar, testar):

root@kitploit:~
kit dev

Isso irá:

  1. Formatar e verificar arquivos fonte em src/
  2. Verificar tipos dos exemplos em examples/
  3. Executar testes em tests/ com cobertura

Verificando Paridade Interpretador/Compilador

Execute verificações de paridade para os exemplos:

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

Gerando Documentação

Gere documentação da API a partir de comentários de documentação:

root@kitploit:~
kit doc

Nota: Fontes Kit com comentários de documentação (##) gerarão documentos HTML em docs/*.html.

Limpando Artefatos de Build

Remova arquivos gerados, caches e artefatos de build:

root@kitploit:~
kit task clean

Nota: Definido em kit.toml.

Instalação Local

Para instalar este pacote localmente para desenvolvimento:

root@kitploit:~
kit install

Isso instala o pacote em ~/.kit/packages/@kit/policy/, tornando-o disponível para importação como Kit.Policy em outros projetos.

Licença

Este pacote é distribuído sob a licença MIT - veja LICENSE para detalhes.

Baixar ferramenta
Testes de comportamento de política de ponta a ponta
tests/types.test.kitTestes de tipos e auxiliares de política