Packages
ash_authentication
5.0.0-rc.9
5.0.0-rc.12
5.0.0-rc.11
5.0.0-rc.10
5.0.0-rc.9
5.0.0-rc.8
5.0.0-rc.7
5.0.0-rc.6
5.0.0-rc.5
5.0.0-rc.4
5.0.0-rc.3
5.0.0-rc.2
5.0.0-rc.1
5.0.0-rc.0
4.14.1
4.14.0
4.13.7
4.13.6
4.13.5
4.13.4
4.13.3
4.13.2
retired
4.13.1
retired
4.13.0
4.12.0
4.11.0
4.10.0
4.9.9
4.9.8
4.9.7
4.9.6
4.9.5
4.9.4
4.9.3
4.9.2
4.9.1
4.9.0
4.8.7
4.8.6
4.8.5
4.8.3
4.8.2
4.8.1
4.8.0
4.7.6
4.7.5
4.7.4
4.7.3
4.7.2
4.7.1
4.7.0
4.6.4
4.6.3
4.6.2
4.6.1
4.6.0
4.5.6
4.5.5
4.5.4
4.5.3
4.5.2
4.5.1
4.5.0
4.4.9
4.4.8
4.4.7
4.4.6
4.4.5
4.4.4
4.4.3
4.4.2
4.4.1
4.4.0
4.3.12
4.3.11
4.3.10
4.3.9
4.3.8
4.3.7
4.3.6
4.3.5
4.3.4
4.3.3
4.3.2
4.3.1
4.3.0
4.2.7
4.2.6
4.2.5
4.2.4
4.2.3
4.2.2
4.2.1
4.2.0
4.1.0
4.0.4
4.0.3
4.0.2
4.0.1
4.0.0
4.0.0-rc.6
4.0.0-rc.5
4.0.0-rc.3
4.0.0-rc.2
4.0.0-rc.1
4.0.0-rc.0
3.12.4
3.12.3
3.12.2
3.12.1
3.12.0
3.11.16
3.11.15
3.11.14
3.11.13
3.11.12
3.11.11
3.11.10
3.11.9
3.11.8
3.11.7
3.11.6
3.11.5
3.11.4
3.11.3
3.11.2
3.11.1
3.11.0
3.10.8
3.10.7
3.10.6
3.10.5
3.10.4
3.10.3
3.10.2
3.10.1
3.10.0
3.9.6
3.9.5
3.9.4
3.9.3
3.9.2
3.9.1
3.9.0
3.8.0
3.7.9
3.7.8
3.7.6
3.7.5
3.7.4
3.7.3
3.7.2
3.7.1
3.7.0
3.6.1
3.6.0
3.5.3
3.5.2
3.5.1
3.5.0
3.3.1
3.3.0
3.2.2
3.2.1
3.2.0
3.1.0
3.0.3
Authentication extension for the Ash Framework.
Security advisory:
This version has known vulnerabilities.
View advisories
Current section
Files
Jump to
Current section
Files
ash_authentication
mix.exs
mix.exs
# SPDX-FileCopyrightText: 2022 Alembic Pty Ltd
#
# SPDX-License-Identifier: MIT
defmodule AshAuthentication.MixProject do
@moduledoc false
use Mix.Project
@description """
Authentication extension for the Ash Framework.
"""
@version "5.0.0-rc.9"
def project do
[
app: :ash_authentication,
version: @version,
elixir: "~> 1.13",
consolidate_protocols: Mix.env() == :prod,
start_permanent: Mix.env() == :prod,
elixirc_paths: elixirc_paths(Mix.env()),
package: package(),
deps: deps(),
dialyzer: [
plt_add_apps: [:mix, :ex_unit],
plt_core_path: "priv/plts",
plt_file: {:no_warn, "priv/plts/dialyzer.plt"}
],
docs: &docs/0,
aliases: aliases(),
description: @description,
consolidate_protocols: Mix.env() == :prod
]
end
def package do
[
maintainers: [
"James Harton <james.harton@alembic.com.au>",
"Zach Daniel <zach@zachdaniel.dev>"
],
licenses: ["MIT"],
links: %{
"Source" => "https://github.com/team-alembic/ash_authentication",
"Phoenix Support" => "https://github.com/team-alembic/ash_authentication_phoenix",
"Changelog" =>
"https://github.com/team-alembic/ash_authentication/blob/main/CHANGELOG.md",
"REUSE Compliance" =>
"https://api.reuse.software/info/github.com/team-alembic/ash_authentication"
},
source_url: "https://github.com/team-alembic/ash_authentication",
files:
~w[lib .formatter.exs mix.exs README* LICENSE* CHANGELOG* documentation usage-rules.md]
]
end
def cli do
[preferred_envs: [ci: :test]]
end
# Run "mix help compile.app" to learn about applications.
def application do
[
extra_applications: extra_applications(Mix.env()),
mod: {AshAuthentication.Application, []}
]
end
defp extra_applications(:dev), do: [:logger, :bcrypt_elixir, :crypto]
defp extra_applications(:test), do: [:logger, :bcrypt_elixir, :crypto]
defp extra_applications(_), do: [:logger, :crypto]
defp docs do
[
main: "readme",
source_ref: "v#{@version}",
logo: "logos/ash-auth-small-logo.png",
extra_section: ["GUIDES"],
extras: [
{"README.md", name: "Home"},
"CHANGELOG.md",
{"documentation/dsls/DSL-AshAuthentication.md",
search_data: Spark.Docs.search_data_for(AshAuthentication)},
{"documentation/dsls/DSL-AshAuthentication.AddOn.Confirmation.md",
search_data: Spark.Docs.search_data_for(AshAuthentication.AddOn.Confirmation)},
{"documentation/dsls/DSL-AshAuthentication.AddOn.LogOutEverywhere.md",
search_data: Spark.Docs.search_data_for(AshAuthentication.AddOn.LogOutEverywhere)},
{"documentation/dsls/DSL-AshAuthentication.Strategy.ApiKey.md",
search_data: Spark.Docs.search_data_for(AshAuthentication.Strategy.ApiKey)},
{"documentation/dsls/DSL-AshAuthentication.Strategy.Apple.md",
search_data: Spark.Docs.search_data_for(AshAuthentication.Strategy.Apple)},
{"documentation/dsls/DSL-AshAuthentication.Strategy.Auth0.md",
search_data: Spark.Docs.search_data_for(AshAuthentication.Strategy.Auth0)},
{"documentation/dsls/DSL-AshAuthentication.Strategy.DynamicOidc.md",
search_data: Spark.Docs.search_data_for(AshAuthentication.Strategy.DynamicOidc)},
{"documentation/dsls/DSL-AshAuthentication.Strategy.Github.md",
search_data: Spark.Docs.search_data_for(AshAuthentication.Strategy.Github)},
{"documentation/dsls/DSL-AshAuthentication.Strategy.Google.md",
search_data: Spark.Docs.search_data_for(AshAuthentication.Strategy.Google)},
{"documentation/dsls/DSL-AshAuthentication.Strategy.MagicLink.md",
search_data: Spark.Docs.search_data_for(AshAuthentication.Strategy.MagicLink)},
{"documentation/dsls/DSL-AshAuthentication.Strategy.Microsoft.md",
search_data: Spark.Docs.search_data_for(AshAuthentication.Strategy.Microsoft)},
{"documentation/dsls/DSL-AshAuthentication.Strategy.OAuth2.md",
search_data: Spark.Docs.search_data_for(AshAuthentication.Strategy.OAuth2)},
{"documentation/dsls/DSL-AshAuthentication.Strategy.Oidc.md",
search_data: Spark.Docs.search_data_for(AshAuthentication.Strategy.Oidc)},
{"documentation/dsls/DSL-AshAuthentication.Strategy.Okta.md",
search_data: Spark.Docs.search_data_for(AshAuthentication.Strategy.Okta)},
{"documentation/dsls/DSL-AshAuthentication.Strategy.Otp.md",
search_data: Spark.Docs.search_data_for(AshAuthentication.Strategy.Otp)},
{"documentation/dsls/DSL-AshAuthentication.Strategy.Password.md",
search_data: Spark.Docs.search_data_for(AshAuthentication.Strategy.Password)},
{"documentation/dsls/DSL-AshAuthentication.Strategy.RecoveryCode.md",
search_data: Spark.Docs.search_data_for(AshAuthentication.Strategy.RecoveryCode)},
{"documentation/dsls/DSL-AshAuthentication.Strategy.Slack.md",
search_data: Spark.Docs.search_data_for(AshAuthentication.Strategy.Slack)},
{"documentation/dsls/DSL-AshAuthentication.Strategy.Totp.md",
search_data: Spark.Docs.search_data_for(AshAuthentication.Strategy.Totp)},
{"documentation/dsls/DSL-AshAuthentication.OidcConnection.md",
search_data: Spark.Docs.search_data_for(AshAuthentication.OidcConnection)},
{"documentation/dsls/DSL-AshAuthentication.TokenResource.md",
search_data: Spark.Docs.search_data_for(AshAuthentication.TokenResource)},
{"documentation/dsls/DSL-AshAuthentication.UserIdentity.md",
search_data: Spark.Docs.search_data_for(AshAuthentication.UserIdentity)},
"documentation/topics/auto-signout.md",
"documentation/topics/custom-strategy.md",
"documentation/topics/policies-on-authentication-resources.md",
"documentation/topics/testing.md",
"documentation/topics/recovery-code-security.md",
"documentation/topics/tokens.md",
"documentation/topics/upgrading.md",
{"documentation/tutorials/api-keys.md", title: "API Keys"},
"documentation/tutorials/audit-log.md",
"documentation/tutorials/auth0.md",
"documentation/tutorials/confirmation.md",
{"documentation/tutorials/dynamic-oidc.md", title: "Dynamic OIDC"},
"documentation/tutorials/get-started.md",
"documentation/tutorials/github.md",
"documentation/tutorials/google.md",
"documentation/tutorials/magic-links.md",
"documentation/tutorials/microsoft.md",
"documentation/tutorials/okta.md",
"documentation/tutorials/otp.md",
"documentation/tutorials/password.md",
"documentation/tutorials/recovery-codes.md",
"documentation/tutorials/slack.md",
"documentation/tutorials/totp.md"
],
groups_for_extras: [
"Start Here": [
"documentation/home.md",
"documentation/tutorials/get-started.md"
],
Tutorials: ~r"documentation/tutorials",
Topics: ~r"documentation/topics",
"How To": ~r"documentation/how-to",
Reference: ~r"documentation/dsls"
],
skip_undefined_reference_warnings_on: [
"CHANGELOG.md"
],
nest_modules_by_prefix: [],
before_closing_head_tag: fn type ->
if type == :html do
"""
<script>
if (location.hostname === "hexdocs.pm") {
var script = document.createElement("script");
script.src = "https://plausible.io/js/script.js";
script.setAttribute("defer", "defer")
script.setAttribute("data-domain", "ashhexdocs")
document.head.appendChild(script);
}
</script>
"""
end
end,
filter_modules: fn mod, _ ->
String.starts_with?(inspect(mod), "AshAuthentication") ||
String.starts_with?(inspect(mod), "Mix.Task")
end,
source_url_pattern:
"https://github.com/team-alembic/ash_authentication/blob/main/%{path}#L%{line}",
groups_for_modules: [
Extensions: [
AshAuthentication,
AshAuthentication.OidcConnection,
AshAuthentication.TokenResource,
AshAuthentication.UserIdentity
],
Strategies: [
AshAuthentication.Strategy,
AshAuthentication.AddOn.Confirmation,
AshAuthentication.AddOn.LogOutEverywhere,
AshAuthentication.Strategy.Apple,
AshAuthentication.Strategy.Auth0,
AshAuthentication.Strategy.Custom,
AshAuthentication.Strategy.DynamicOidc,
AshAuthentication.Strategy.Github,
AshAuthentication.Strategy.Google,
AshAuthentication.Strategy.Microsoft,
AshAuthentication.Strategy.MagicLink,
AshAuthentication.Strategy.OAuth2,
AshAuthentication.Strategy.Oidc,
AshAuthentication.Strategy.Otp,
AshAuthentication.Strategy.Password,
AshAuthentication.Strategy.Slack
],
Cryptography: [
AshAuthentication.HashProvider,
AshAuthentication.BcryptProvider,
AshAuthentication.Jwt
],
Introspection: [
AshAuthentication.Info,
AshAuthentication.OidcConnection.Info,
AshAuthentication.TokenResource.Info,
AshAuthentication.UserIdentity.Info
],
Utilities: [
AshAuthentication.Debug,
AshAuthentication.Secret,
AshAuthentication.Sender,
AshAuthentication.Supervisor
],
Plugs: [
AshAuthentication.Plug,
AshAuthentication.Plug.Helpers
],
"Reusable Components": [
AshAuthentication.GenerateTokenChange,
AshAuthentication.Strategy.Password.HashPasswordChange,
AshAuthentication.Strategy.Password.PasswordConfirmationValidation,
AshAuthentication.Strategy.Password.PasswordValidation,
AshAuthentication.Checks.AshAuthenticationInteraction,
AshAuthentication.Password.Plug,
~r/AshAuthentication.Validations/
],
Errors: [
~r/^AshAuthentication\.Errors/
],
Internals: ~r/.*/
]
]
end
# Run "mix help deps" to learn about dependencies.
defp deps do
[
{:argon2_elixir, "~> 4.0", optional: true},
{:ash, ash_version("~> 3.7")},
{:assent, "~> 0.3.0"},
{:bcrypt_elixir, "~> 3.0"},
{:castore, "~> 1.0"},
{:finch, "~> 0.19"},
{:igniter, "~> 0.4", optional: true},
{:jason, "~> 1.4"},
{:joken, "~> 2.5"},
{:nimble_totp, "~> 1.0"},
{:plug, "~> 1.13"},
{:spark, "~> 2.0"},
{:splode, "~> 0.2"},
{:wax_, "~> 0.7", optional: true},
# Dev/test
{:absinthe_plug, "~> 1.5", only: [:dev, :test]},
{:ash_graphql, "~> 1.8", only: [:dev, :test]},
{:ash_json_api, "~> 1.5", only: [:dev, :test]},
{:ash_postgres, "~> 2.6 and >= 2.6.8", optional: true},
{:credo, "~> 1.6", only: [:dev, :test], runtime: false},
{:dialyxir, "~> 1.2", only: [:dev, :test], runtime: false},
{:doctor, "~> 0.18", only: [:dev, :test]},
{:ex_check, "~> 0.15", only: [:dev, :test]},
{:ex_doc, "~> 0.39", only: [:dev, :test]},
{:git_ops, "~> 2.4", only: [:dev, :test], runtime: false},
{:mimic, "~> 2.0", only: [:dev, :test]},
{:mix_audit, "~> 2.1", only: [:dev, :test]},
{:plug_cowboy, "~> 2.5", only: [:dev, :test]},
{:simple_sat, "~> 0.1", only: [:dev, :test]},
{:sobelow, "~> 0.12", only: [:dev, :test]},
{:usage_rules, "~> 1.2", only: [:dev]}
]
end
defp aliases do
extensions = [
"AshAuthentication",
"AshAuthentication.AddOn.AuditLog",
"AshAuthentication.AddOn.Confirmation",
"AshAuthentication.AddOn.LogOutEverywhere",
"AshAuthentication.AuditLogResource",
"AshAuthentication.Strategy.ApiKey",
"AshAuthentication.Strategy.Apple",
"AshAuthentication.Strategy.Auth0",
"AshAuthentication.Strategy.DynamicOidc",
"AshAuthentication.Strategy.Github",
"AshAuthentication.Strategy.Google",
"AshAuthentication.Strategy.MagicLink",
"AshAuthentication.Strategy.Microsoft",
"AshAuthentication.Strategy.OAuth2",
"AshAuthentication.Strategy.Oidc",
"AshAuthentication.Strategy.Okta",
"AshAuthentication.Strategy.Otp",
"AshAuthentication.Strategy.Password",
"AshAuthentication.Strategy.RecoveryCode",
"AshAuthentication.Strategy.RememberMe",
"AshAuthentication.Strategy.Slack",
"AshAuthentication.Strategy.Totp",
"AshAuthentication.OidcConnection",
"AshAuthentication.TokenResource",
"AshAuthentication.UserIdentity"
]
[
ci: [
"format --check-formatted",
"doctor --full --raise",
"credo --strict",
"dialyzer",
"hex.audit",
"test"
],
"spark.formatter": "spark.formatter --extensions #{Enum.join(extensions, ",")}",
"spark.cheat_sheets": "spark.cheat_sheets --extensions #{Enum.join(extensions, ",")}",
docs: [
"spark.cheat_sheets",
"docs",
"spark.replace_doc_links"
],
credo: ["credo --strict"],
test: ["ecto.create --quiet", "ecto.migrate --quiet", "test"]
]
end
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(:dev), do: ["lib", "test/support", "dev"]
defp elixirc_paths(_), do: ["lib"]
defp ash_version(default_version) do
case System.get_env("ASH_VERSION") do
nil -> default_version
"local" -> [path: "../ash", override: true]
"main" -> [git: "https://github.com/ash-project/ash.git", override: true]
version -> "~> #{version}"
end
end
end