Litmus test: if this was rendered into S-expressions, the let would stay, but the = would disappear.
If the construct is not allowed when user is already in scope, it reflects the designer's view that an assignment in a conditional isn't a good thing.
If the construct is allowed when user exists already, with no diagnostic, then it carries the pitfalls that this thread is about.