forked from shibao/cannery
		
	use atoms for role changeset
This commit is contained in:
		@@ -112,7 +112,7 @@ defmodule Cannery.Accounts do
 | 
			
		||||
    |> Multi.one(:users_count, from(u in User, select: count(u.id), distinct: true))
 | 
			
		||||
    |> Multi.insert(:add_user, fn %{users_count: count} ->
 | 
			
		||||
      # if no registered users, make first user an admin
 | 
			
		||||
      role = if count == 0, do: "admin", else: "user"
 | 
			
		||||
      role = if count == 0, do: :admin, else: :user
 | 
			
		||||
 | 
			
		||||
      User.registration_changeset(attrs) |> User.role_changeset(role)
 | 
			
		||||
    end)
 | 
			
		||||
 
 | 
			
		||||
@@ -48,7 +48,7 @@ defmodule Cannery.Accounts.User do
 | 
			
		||||
  @type new_user :: %User{}
 | 
			
		||||
  @type id :: UUID.t()
 | 
			
		||||
  @type changeset :: Changeset.t(t() | new_user())
 | 
			
		||||
  @type role :: :admin | :user | String.t()
 | 
			
		||||
  @type role :: :admin | :user
 | 
			
		||||
 | 
			
		||||
  @doc """
 | 
			
		||||
  A user changeset for registration.
 | 
			
		||||
@@ -81,7 +81,7 @@ defmodule Cannery.Accounts.User do
 | 
			
		||||
  """
 | 
			
		||||
  @spec role_changeset(t() | new_user() | changeset(), role()) :: changeset()
 | 
			
		||||
  def role_changeset(user, role) do
 | 
			
		||||
    user |> cast(%{"role" => role}, [:role])
 | 
			
		||||
    user |> change(role: role)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  @spec validate_email(changeset()) :: changeset()
 | 
			
		||||
 
 | 
			
		||||
@@ -43,7 +43,7 @@ defmodule Cannery.Fixtures do
 | 
			
		||||
    })
 | 
			
		||||
    |> Accounts.register_user()
 | 
			
		||||
    |> unwrap_ok_tuple()
 | 
			
		||||
    |> User.role_changeset("admin")
 | 
			
		||||
    |> User.role_changeset(:admin)
 | 
			
		||||
    |> Repo.update!()
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user