It should work as it is, but you can update the validation rule and be explicit, incase laravel isn't picking it up.
unique:users,email
However, if you're using PostgreSQL or another database that is case-sensitive, this may be the reason why. You'll need to convert the email into lowercase and always check the value as lowercase. MySQL is not case-sensitive, so normal validation is fine.
So if this is the first registration......I need to first check on the user model the requested email and then get its id.
But...the problem is, if the user is not registered yes, the $user->id will return nothing. Will this not cause an issue?
'email' => ['required', 'unique:users', 'email', 'unique:users,email' . $user->id],
What does the middleware do exactly? Middleware is used with routing/requests, not for validation, therefore it'll be useless.
Also, remove the 'unique:users,email' . $user->id because that doesn't make sense. You can't have a user if you're registering. You just want unique:users,email. Ignoring the user id is for a completely different scenario.