# Blossom
[](https://hex.pm/packages/blossom)
[](https://builds.sr.ht/~nomorepanic/blossom/commits/main/test-current.yaml?)
Easy identity for easy authentication
## Usage
1. Add to your config:
```elixir
config :myapp,
ecto_repos: [MyApp.Repo],
db_url: "ecto://postgres:postgres@localhost/myapp"
config :myapp, Blossom,
secret: "your-secret",
audience: "localhost",
expiration: 43200,
issuer: "myapp",
realm: "myapp",
jwt_key: :jwt,
user_key: :user,
users_controller: MyApp.Controllers.Users
```
2. Add to your migrations:
```elixir
defmodule MyApp.Repo.Migrations.Init do
use Ecto.Migration
def up do
Blossom.Migrations.up()
end
def down do
Blossom.Migrations.down()
end
end
```
3. Create an auth module
```elixir
defmodule MyApp.Auth do
use Blossom.Auth
end
```
4. Create controllers, models, and schemas:
```elixir
defmodule MyApp.Schemas.Users do
use Blossom.Schemas.Users
end
defmodule MyApp.Models.Users do
use Blossom.Models.Users
end
defmodule MyApp.Controllers.Users do
use Blossom.Controllers.Users
end
defmodule MyApp.Schemas.Organizations do
use Blossom.Schemas.Organizations
end
defmodule MyApp.Models.Organizations do
use Blossom.Models.Organizations
end
defmodule MyApp.Controllers.Organizations do
use Blossom.Controllers.Organizations
end
defmodule MyApp.Schemas.OrganizationsRoles do
use Blossom.Schemas.OrganizationsRoles
end
defmodule MyApp.Models.OrganizationsRoles do
use Blossom.Models.OrganizationsRoles
end
defmodule MyApp.Controllers.OrganizationsRoles do
use Blossom.Controllers.OrganizationsRoles
end
```
5. Plug the AuthPlug in your private router or pipeline:
```elixir
plug(Blossom.AuthPlug, otp_app: :myapp)
```