Packages
ash_authentication
5.0.0-rc.5
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
lib/mix/tasks/ash_authentication.add_add_on.ex
# SPDX-FileCopyrightText: 2022 Alembic Pty Ltd
#
# SPDX-License-Identifier: MIT
# credo:disable-for-this-file Credo.Check.Design.AliasUsage
if Code.ensure_loaded?(Igniter) do
defmodule Mix.Tasks.AshAuthentication.AddAddOn do
use Igniter.Mix.Task
@example "mix ash_authentication.add_add_on audit_log"
@shortdoc "Adds the provided add-on to your user resource"
@add_ons [
audit_log: "Track authentication events for security and compliance.",
confirmation: "Confirm new users via email."
]
@add_on_explanation Enum.map_join(@add_ons, "\n", fn {name, description} ->
" * `#{name}` - #{description}"
end)
@add_on_names @add_ons |> Keyword.keys() |> Enum.map(&to_string/1)
@add_on_tasks %{
"audit_log" => "ash_authentication.add_add_on.audit_log",
"confirmation" => "ash_authentication.add_add_on.confirmation"
}
@moduledoc """
#{@shortdoc}
This task will add the provided add-on to your user resource and set up any required supporting resources.
The following add-ons are available:
#{@add_on_explanation}
Each add-on can also be added directly with its own task:
* `mix ash_authentication.add_add_on.audit_log`
* `mix ash_authentication.add_add_on.confirmation`
## Example
```bash
#{@example}
```
## Options
* `--user`, `-u` - The user resource. Defaults to `YourApp.Accounts.User`
## Audit Log options
- `--audit-log` - The audit log resource name. Defaults to `<domain>.AuditLog`.
- `--include-fields` - Comma-separated list of sensitive fields to include in audit logs.
- `--exclude-strategies` - Comma-separated list of authentication strategies to exclude from logging.
- `--exclude-actions` - Comma-separated list of actions to exclude from logging.
"""
def info(_argv, _composing_task) do
%Igniter.Mix.Task.Info{
group: :ash,
example: @example,
extra_args?: false,
only: nil,
positional: [
add_on: []
],
composes: Map.values(@add_on_tasks),
schema: [
user: :string,
identity_field: :string,
audit_log: :string,
include_fields: :csv,
exclude_strategies: :csv,
exclude_actions: :csv
],
aliases: [
u: :user,
a: :audit_log,
i: :identity_field
]
}
end
def igniter(igniter) do
add_on_list = igniter.args.positional[:add_on] || []
add_on = if is_list(add_on_list), do: List.first(add_on_list), else: add_on_list
if add_on not in @add_on_names do
Mix.shell().error("""
Invalid add-on provided: `#{add_on || "none"}`
Not all add-ons can be installed using `ash_authentication.add_add_on` yet.
Want to see an add-on added? Open an issue (or even better, a PR!) on GitHub.
See a list of add-ons and how to install them here:
https://hexdocs.pm/ash_authentication/get-started.html
Available Add-ons:
#{@add_on_explanation}
""")
exit({:shutdown, 1})
end
Igniter.compose_task(igniter, @add_on_tasks[add_on], igniter.args.argv_flags)
end
end
else
defmodule Mix.Tasks.AshAuthentication.AddAddOn do
@shortdoc "Adds the provided add-on to your user resource"
@moduledoc @shortdoc
use Mix.Task
def run(_argv) do
Mix.shell().error("""
The task 'ash_authentication.add_add_on' requires igniter to be run.
Please install igniter and try again.
For more information, see: https://hexdocs.pm/igniter
""")
exit({:shutdown, 1})
end
end
end