ash_admin

An admin ui for Ash Resources

Latest version: 0.10.9 registry icon
Maintenance score
100
Safety score
100
Popularity score
73
Check your open source dependency risks. Get immediate insight about security, stability and licensing risks.
Security
  Vulnerabilities
Version Suggest Low Medium High Critical
0.10.9 0 0 0 0 0
0.10.8 0 0 0 0 0
0.10.7 0 0 0 0 0
0.10.6 0 0 0 0 0
0.10.5 0 0 0 0 0
0.10.4 0 0 0 0 0
0.10.3 0 0 0 0 0
0.10.2 0 0 0 0 0
0.10.1 0 0 0 0 0
0.10.0 0 0 0 0 0
0.9.8 0 0 0 0 0
0.9.7 0 0 0 0 0
0.9.6 0 0 0 0 0
0.9.5 0 0 0 0 0
0.9.4 0 0 0 0 0
0.9.3 0 0 0 0 0
0.9.2 0 0 0 0 0
0.9.1 0 0 0 0 0
0.9.0 0 0 0 0 0
0.8.1 0 0 0 0 0
0.8.0 0 0 0 0 0
0.7.1 0 0 0 0 0
0.7.0 0 0 0 0 0
0.6.2 0 0 0 0 0
0.6.1 0 0 0 0 0
0.5.2 0 0 0 0 0
0.5.0 0 0 0 0 0
0.4.4 0 0 0 0 0
0.4.2 0 0 0 0 0
0.4.0 0 0 0 0 0
0.2.22 0 0 0 0 0
0.2.21 0 0 0 0 0
0.2.20 0 0 0 0 0
0.2.19 0 0 0 0 0
0.2.18 0 0 0 0 0
0.2.17 0 0 0 0 0
0.2.15 0 0 0 0 0
0.2.14 0 0 0 0 0
0.2.13 0 0 0 0 0
0.2.12 0 0 0 0 0
0.2.11 0 0 0 0 0
0.2.10 0 0 0 0 0
0.2.9 0 0 0 0 0
0.2.8 0 0 0 0 0
0.2.7 0 0 0 0 0
0.2.6 0 0 0 0 0
0.2.5 0 0 0 0 0
0.2.4 0 0 0 0 0
0.2.3 0 0 0 0 0
0.2.1 0 0 0 0 0
0.1.6 0 0 0 0 0
0.1.5 0 0 0 0 0
0.1.3 0 0 0 0 0
0.1.2 0 0 0 0 0
0.1.0 0 0 0 0 0

Stability
Latest release:

0.10.9 - This version is safe to use because it has no known security vulnerabilities at this time. Find out if your coding project uses this component and get notified of any reported security vulnerabilities with Meterian-X Open Source Security Platform

Licensing

Maintain your licence declarations and avoid unwanted licences to protect your IP the way you intended.

MIT   -   MIT License

Not a wildcard

Not proprietary

OSI Compliant



AshAdmin

Elixir CI License: MIT Hex version badge

An admin UI for Ash resources. Built with Phoenix LiveView.

Demo

https://www.youtube.com/watch?v=aFMLz3cpQ8c

Usage

First, ensure you've added ash_admin to your mix.exs file.

{:ash_admin, "~> 0.10.10-rc.1"}

Setup

Ensure your domains are configured in config.exs

config :my_app, ash_domains: [MyApp.Foo, MyApp.Bar]

Add the admin extension to each domain you want to show in AshAdmin dashboard, and configure it to show. See AshAdmin.Domain for more configuration options.

# In your Domain(s)
use Ash.Domain,
  extensions: [AshAdmin.Domain]

admin do
  show? true
end

Resources in each Domain will be included in AshAdmin. See AshAdmin.Resource for more resource configuration options. Specifically, if you app has an actor you will want to configure that. Ash Admin allows you to change actors and therefore doesn't rely on Ash.set_actor

# In your resource that acts as an actor (e.g. User)
use Ash.Resource,
  domain: YourDomain,
  extensions: [AshAdmin.Resource]

  admin do
    actor?(true)
  end

Modify your router to add AshAdmin at whatever path you'd like to serve it at.

defmodule MyAppWeb.Router do
  use Phoenix.Router

  import AshAdmin.Router

  # AshAdmin requires a Phoenix LiveView `:browser` pipeline
  # If you DO NOT have a `:browser` pipeline already, then AshAdmin has a `:browser` pipeline
  # Most applications will not need this:
  admin_browser_pipeline :browser

  scope "/" do
    # Pipe it through your browser pipeline
    pipe_through [:browser]

    ash_admin "/admin"
  end
end

Note: there is no builtin security for your AshAdmin (except your apps normal policies). In most cases you will want to secure your AshAdmin routes in some way to prevent them from being public

Now start your project (usually by running mix phx.server in a terminal) and visit /admin in your browser (or whatever path you gave to ash_admin in your router).

Content Security Policy

If your app specifies a content security policy header, eg. via

plug :put_secure_browser_headers, %{"content-security-policy" => "default-src 'self'"}

in your router, then all of the styles and JavaScript used to power AshAdmin will be blocked by your browser.

To avoid this, you can add the default AshAdmin nonces to the default-src allowlist, ie.

plug :put_secure_browser_headers, %{"content-security-policy" => "default-src 'nonce-ash_admin-Ed55GFnX' 'self'"}

alternatively you can supply your own nonces to the ash_admin route by setting a :csp_nonce_assign_key in the options list, ie.

ash_admin "/admin", csp_nonce_assign_key: :csp_nonce_value

This will allow AshAdmin-generated inline CSS and JS blocks to execute normally.

Configuration

See the documentation in AshAdmin.Resource and AshAdmin.Domain for information on the available configuration.

Troubleshooting

If your Admin UI is not responding as expected. Check your browser's developer console for content-security-policy violations (see above).

Development

To work on ash_admin, you'll want to be able to run the dev app. You'll need to have postgres setup locally, at which point you can do the following:

  1. mix ash_postgres.create
  2. mix migrate
  3. mix migrate_tenants
  4. mix setup

Then, you can start the app with: mix dev

If you make changes to the resources, you can generate migrations with mix generate_migrations

If you make changes to any of the assets (CSS or JavaScript), including updating dependencies that include assets such as LiveView, you will need to recompile the assets with mix assets.deploy.

Contributors

Ash is made possible by its excellent community!

Become a contributor