Packages
attesto_phoenix
0.6.21
2.1.0
2.0.2
2.0.1
2.0.0
1.4.0
1.3.0
1.2.0
1.1.0
1.0.0
0.20.0
0.19.1
0.19.0
0.18.0
0.17.0
0.16.0
0.15.0
0.14.2
0.14.1
0.14.0
0.13.5
0.13.4
0.13.3
0.13.2
0.13.1
0.13.0
0.12.0
0.11.0
0.10.0
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.0
0.7.7
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.23
0.6.22
0.6.21
0.6.20
0.6.19
0.6.18
0.6.17
0.6.16
0.6.15
0.6.14
0.6.13
0.6.12
0.6.11
0.6.10
0.6.9
0.6.8
0.6.7
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
Phoenix/Ecto OAuth 2.0 / OIDC authorization server layer over attesto: authorization, token, PAR, revocation, discovery, JWKS, UserInfo, protected-resource plugs, and Ecto-backed token stores.
Current section
Files
Jump to
Current section
Files
attesto_phoenix
mix.exs
mix.exs
defmodule AttestoPhoenix.MixProject do
@moduledoc false
use Mix.Project
@version "0.6.21"
@url "https://github.com/XukuLLC/attesto_phoenix"
@maintainers ["Neil Berkman"]
def project do
[
name: "AttestoPhoenix",
app: :attesto_phoenix,
version: @version,
elixir: "~> 1.18",
package: package(),
source_url: @url,
homepage_url: @url,
maintainers: @maintainers,
description:
"Phoenix/Ecto OAuth 2.0 / OIDC authorization server layer over attesto: " <>
"authorization, token, PAR, revocation, discovery, JWKS, UserInfo, " <>
"protected-resource plugs, and Ecto-backed token stores.",
deps: deps(),
elixirc_paths: elixirc_paths(Mix.env()),
docs: docs(),
aliases: aliases(),
dialyzer: [
ignore_warnings: ".dialyzer_ignore.exs",
plt_add_apps: [:mix, :ex_unit],
plt_core_path: "priv/plts",
plt_file: {:no_warn, "priv/plts/attesto_phoenix.plt"}
]
]
end
def cli do
[preferred_envs: [precommit: :test]]
end
def application do
[extra_applications: [:logger]]
end
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
defp deps do
[
# Core OAuth2/OIDC primitives: Token, IDToken, DPoP, MTLS, Scope,
# AuthorizationCode, AuthorizationRequest, RefreshToken, Discovery,
# OpenIDDiscovery, the store behaviours, and the base plugs.
{:attesto, "~> 0.6"},
# Ecto-backed CodeStore/RefreshStore/NonceStore/ReplayCheck + the migration
# generator.
{:ecto_sql, "~> 3.10"},
# Controllers + the attesto_routes/1 router macro.
{:phoenix, "~> 1.7"},
# Plug behaviours for the protected-resource plugs (also a Phoenix
# transitive dependency).
{:plug, "~> 1.15"},
# `mix attesto_phoenix.install` (Mix.Tasks.AttestoPhoenix.Install) is an
# upgrade-aware Igniter installer: it inspects the host's config and router
# and applies idempotent patches. Declared `optional: true` so the runtime
# hex package never forces igniter onto a consumer that only depends on the
# library at runtime. The dependency is present for the install task to
# compile against and for a host that opts into running the installer, but
# it is not a transitive runtime requirement. The `~> 0.5` requirement
# admits the current 0.6 line.
{:igniter, "~> 0.5", optional: true},
# test - the bundled Ecto stores run against a real Postgres repo.
{:postgrex, ">= 0.0.0", only: [:dev, :test]},
# test-only client interop: prove the protected-resource plug accepts
# DPoP requests generated by an external Req client package.
{:req_dpop, "~> 0.5", only: :test, runtime: false},
# dev / quality
{:ex_doc, "~> 0.40", only: :dev, runtime: false},
{:credo, "~> 1.7", only: [:dev, :test], runtime: false},
{:dialyxir, "~> 1.4", only: [:dev], runtime: false},
{:mix_test_watch, "~> 1.4", only: :dev, runtime: false},
{:quokka, "~> 2.12", only: [:dev, :test], runtime: false}
]
end
defp aliases do
[
setup: ["deps.get"],
precommit: [
"format --check-formatted",
"compile --warnings-as-errors",
"credo --strict",
"test"
]
]
end
defp docs do
[
main: "readme",
source_ref: "v#{@version}",
source_url: @url,
extras: [
"README.md",
"guides/examples.md",
"guides/consumer_migration.md",
"guides/proxy_canonical_host.md",
"guides/replay_nonce_production.md",
"guides/error_envelope.md",
"notebooks/attesto_phoenix_demo.livemd",
"CHANGELOG.md",
"LICENSE"
],
groups_for_extras: [
Guides: ~r/guides\/.*/,
Notebooks: ~r/notebooks\/.*/,
Changelog: ~r/CHANGELOG\.md/,
License: ~r/LICENSE/
],
groups_for_modules: [
Setup: [AttestoPhoenix, AttestoPhoenix.Config, AttestoPhoenix.Router],
"Host contracts (behaviours)": [
AttestoPhoenix.ClientStore,
AttestoPhoenix.PrincipalStore,
AttestoPhoenix.ScopePolicy,
AttestoPhoenix.ConsentPolicy,
AttestoPhoenix.RegistrationStore,
AttestoPhoenix.EventSink
],
Controllers: [
AttestoPhoenix.Controller.TokenController,
AttestoPhoenix.Controller.RevocationController,
AttestoPhoenix.Controller.DiscoveryController,
AttestoPhoenix.Controller.JWKSController,
AttestoPhoenix.Controller.PARController,
AttestoPhoenix.Controller.RegistrationController,
AttestoPhoenix.Controller.UserinfoController
],
Stores: [
AttestoPhoenix.Store.EctoCodeStore,
AttestoPhoenix.Store.EctoRefreshStore,
AttestoPhoenix.Store.EctoReplayCheck,
AttestoPhoenix.Store.EctoNonceStore,
AttestoPhoenix.Store.PAR.ETS,
AttestoPhoenix.Store.Sweeper
],
Schemas: [
AttestoPhoenix.Schema.Authorization,
AttestoPhoenix.Schema.RefreshToken,
AttestoPhoenix.Schema.DPoPReplay,
AttestoPhoenix.Schema.DPoPNonce
],
Shared: [
AttestoPhoenix.OAuthError,
AttestoPhoenix.Event,
AttestoPhoenix.PARStore,
AttestoPhoenix.RequestContext
]
]
]
end
defp package do
[
maintainers: @maintainers,
licenses: ["MIT"],
links: %{
"Changelog" => "https://hexdocs.pm/attesto_phoenix/changelog.html",
"GitHub" => @url
},
files: ~w(lib guides notebooks LICENSE mix.exs README.md CHANGELOG.md)
]
end
end