clifinger
Hello,
I need Help!
I am totally new with Ash and I want to do a login action with a password verification,
Should I do an action or a function in my module ?
Trending in Questions
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
Hi everyone.
My team and I have been working on a fairly modest app based around video streaming and chat, but we’ve landed a customer t...
New
Hello,
I’m trying to build a basic Phoenix web-app, and I’d like to use Tailwind.
However, when I launch mix phx.server, I get an error...
New
I really like the adapter patterns that ecto, nebulex, waffle, etc. use and would love find something similar for a key management servic...
New
Hello folks!
So at work, we are seeing some situations where we have to define some “fixed” strings that are used across the codebase in...
New
How Can I Optimise Compile Time Dependencies
I have been building an elixir application for about 2 years now. Many modules and files ha...
New
I’m working on a small exercise involving update_in/3, and I came up with this solution:
data = %{
name: "Periodic Table",
category:...
New
Other Trending Topics
A little off-topic, but I feel like people here have a good head on their shoulders.
I used to be quite good at making software. Was luc...
New
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
New
I love Elixir. It’s one of 2 programming languages I’ve ever fallen in love with.
But I don’t use it anymore.
Serverless was the promis...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #ai
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #blog-post
- #elixirconf-us
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #elixirconf-eu
- #api
- #forms
- #security
- #metaprogramming










Showing Posts 1 to 10- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
zachdaniel
There are numerous examples in the ash documentation on defining custom actions, please take a look at those. As for authentication specifically, see README — ash_authentication v4.14.1
clifinger
Yes for Ash authentication, but for now I like to understand what I am I doing for learning purpose.
So I made user ressource and a custom register function with Argon2 and it’s work fine.
My question is about login, should I make a custom read action?
For now I did something dirty but working :
clifinger
Again, I don’t want to use Ash_Authentication for now, this is the way I learn
zachdaniel
Understood. Your original question had very little context. If you clarify more about your question up front you’ll get clearer answers in general.
In AshAuthentication what we do is make a read action with a preparation that adds an after action hook with
Ash.Query.after_actionif a user is returned then we check the password. If it doesn’t match then we set the result to{:ok, []}otherwise we return the result as is. When no users are returned we do a dummy password check to protect against timing attacks.With that read action, if you pass in the username and password (which will be an argument) and a user is returned, you know that it’s safe to log them in.
clifinger
Yes, sorry about the context, I will try to be more explicit next time
This one work for login, but now I try to add the validation like the preparation documentation and I don’t see any error in my form.
Please, Can you give me a validation example in the preparation ?
zachdaniel
If you want to see an error in your form, return an error with a
fieldon itclifinger
I love the work you did and I am sure for “normal” crud operation it’s so powerful.
But for a simple read action, it’s too much frustration…
If I do
Ash.Query.add_error(query, field: :email, message: "is invalid"):Maybe I will wait the documentation is more mature, because it’s so hard to too do simple things like a simple read action with validation.
My suggestion is to have exactly the same options for read as the other actions, if I do
create :loginmy form worked fine and also my login action. Just I don’t like to make a create action with no mutation …clifinger
I am slower than when I dev in Rust
zachdaniel
Definitely not a suggestion to make a create action with no mutation. It wouldn’t work anyway
I understand if you’d rather not use it, but my suggestion is not to let small hurdles like this put you off
We work every day based on conversations like this one to make the docs and UX better. Despite how it may seem, Ash is for far more than “normal” crud
It is a very expansive framework and there are lots of places that need some docs love, but its not an indicator of the utility of the framework itself
The common theme among our users is slow to get started, massively productive down the road. If you don’t have time to learn a new thing w/ new patterns then it may not be a good idea to use Ash. It isn’t for everyone, some users don’t enjoy working this way, to each their own, no judgement 
In this case, we added shorthand for creating errors on actions in the way that I described, I was just mistaken that the shorthand had also been applied to read actions.
I’ve released
v3.4.56addressing this, and now the example call toAsh.Query.add_error/2should work.clifinger
I’m fully aware of the work you’ve accomplished, and I believe I’ve gone through almost all your talks on YouTube. I’m going to give myself a little more time, about two more days, before making a final decision. I’m not saying this out of ego, but because I need to make a decisive choice for the company where I work as CTO, which leans towards a more full TypeScript/Node.js stack.
What reassures me is your availability and, of course, all the hard work you’ve put in so far. However, to be completely transparent and honest, I genuinely think the documentation has gaps. I won’t hesitate to contribute once I’m ready myself.
Thank you again for your response!