Packages
ash_admin
0.9.1
1.1.0
1.0.0-rc.0
0.14.0
0.13.26
0.13.25
0.13.24
0.13.23
0.13.22
0.13.21
0.13.20
0.13.19
0.13.18
0.13.17
0.13.16
0.13.15
0.13.14
0.13.13
0.13.12
0.13.11
0.13.10
0.13.9
0.13.8
0.13.7
0.13.6
0.13.5
0.13.4
0.13.3
0.13.2
0.13.1
0.13.0
0.12.6
0.12.5
0.12.4
0.12.3
0.12.2
0.12.1
0.12.0
0.11.11
0.11.10
0.11.9
0.11.8
0.11.7
0.11.6
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.12
0.10.11
0.10.10
retired
0.10.10-rc.1
0.10.10-rc.0
0.10.9
0.10.8
0.10.7
0.10.6
0.10.5
0.10.4
0.10.3
0.10.2
0.10.1
0.10.0
0.9.8
0.9.7
0.9.6
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.1
0.8.0
0.7.1
0.7.0
0.6.2
0.6.1
0.6.0-rc.2
0.6.0-rc.1
0.6.0-rc.0
0.5.2
0.5.1-rc.0
0.5.0
0.4.5-rc.0
0.4.4
0.4.2
0.4.0
0.3.0-rc.0
0.2.22
0.2.21
0.2.20
0.2.19
0.2.18
0.2.17
0.2.16-rc.1
0.2.16-rc.0
0.2.15
0.2.14
0.2.13
0.2.12
0.2.11
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.1
0.1.6
0.1.5
0.1.3
0.1.2
0.1.0
A super-admin UI for Ash Framework, built with Phoenix LiveView.
Current section
Files
Jump to
Current section
Files
README.md
# AshAdmin[](https://opensource.org/licenses/MIT)[](https://coveralls.io/github/ash-project/ash_admin?branch=main)[](https://hex.pm/packages/ash_admin)An admin UI for Ash resources. Built with Phoenix LiveView.## Demohttps://www.youtube.com/watch?v=aFMLz3cpQ8c## UsageFirst, ensure you've added ash_admin to your `mix.exs` file.```elixir{:ash_admin, "~> 0.9.1"}```## SetupEnsure your apis are configured in `config.exs````elixirconfig :my_app, ash_apis: [MyApp.Foo, MyApp.Bar]```Add the admin extension to each api you want to show in AshAdmin dashboard, and configure it to show. See [`AshAdmin.Api`](https://hexdocs.pm/ash_admin/AshAdmin.Api.html) for more configuration options.```elixir# In your Api(s)use Ash.Api, extensions: [AshAdmin.Api]admin do show? trueend```Resources in each Api will be automagically included in AshAdmin. See [`AshAdmin.Resource`](https://hexdocs.pm/ash_admin/AshAdmin.Resource.html) 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````elixir# In your resource that acts as an actor (e.g. User)use Ash.Resource, extensions: [AshAdmin.Resource] admin do actor?(true) end```Modify your router to add AshAdmin at whatever path you'd like to serve it at.```elixirdefmodule 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" endend```**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 PolicyIf your app specifies a content security policy header, eg. via```elixirplug :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 specific AshAdmin nonces to the `default-src` allowlist, ie.```elixirplug :put_secure_browser_headers, %{"content-security-policy" => "default-src 'nonce-ash_admin-Ed55GFnX' 'self'"}```This will allow AshAdmin-generated inline CSS and JS blocks to execute normally.## ConfigurationSee the documentation in [`AshAdmin.Resource`](https://hexdocs.pm/ash_admin/AshAdmin.Resource.html) and [`AshAdmin.Api`](https://hexdocs.pm/ash_admin/AshAdmin.Api.html) for information on the available configuration.## TroubleshootingIf your Admin UI is not responding as expected. Check your browser's developer console for content-security-policy violations (see above).## DevelopmentTo 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`## ContributorsAsh is made possible by its excellent community!<a href="https://github.com/ash-project/ash_admin/graphs/contributors"> <img src="https://contrib.rocks/image?repo=ash-project/ash_admin" /></a>[Become a contributor](https://ash-hq.org/docs/guides/ash/latest/how_to/contribute.md)