Can You Add Additional Attributes to ash_authentication_phoenix?
lpmay:
I went through the tutorial for and have password/email auth working. I’d like to add a
role attribute to my user resource so I did the below:
attributes do
uuid_primary_key :id
attribute :email, :ci_string, allow_nil?: false
attribute :hashed_password, :string, allow_nil?: false, sensitive?: true
attribute :role, :atom do
constraints [one_of: [:admin, :user]]
default :user
allow_nil? false
end
end
At runtime, the form seems to have errors like this:
ERROR: column u0.role does not exist at character 51
Is the intent that I can have arbitrary attributes on a user resources used with
Ash Authentication like this, or is there another approach I should be looking into? Ultimately, I’d like to add some code to
seeds.exs which creates a couple
:admin accounts and gate certain features behind only that role, but I’m very new to Ash, Phoenix and Elixir so I’m not sure if I’m heading in the right general direction or not.
dblack1:
Assuming you’re using ash_postgres, have you run the migration generator since adding the
role attribute? I think that error is postgres complaining that the table doesn’t have a role column
dblack1:
It’s been a while since I used Ash Authentication, but I think yoiu should be able to add arbitrary attributes to your user resource as long as they are not required, or there are defaults for them. If you want to capture other information during registration (other than username/email and password) then you’ll need to do that in a later stage, or create a custom registration liveview/controller.
_mayl_:
I’m away from PC right now but I think you’re right I overlooked needing to run the migrations. I’ll give that a try and report back, thanks so much for the nudge in the right direction!
lpmay:
So can confirm, that did the trick! Thank you <@258473836675072000> for the help!
dblack1:
No worries!