/users API does not accept boolean-like String values for generate_password
|Assignee:||Go MAEDA||% Done:|
When creating a new user using the XML Rest API and the following XML, Redmine is not generating a new password.
<user> <login>test</login> <firstname>test</firstname> <lastname>test</lastname> <mail>email@example.com</mail> <generate_password>true</generate_password> <must_change_passwd>true</must_change_passwd> </user>
true value for
must_change_passwd works as expected, the one for
generate_password is ignored.
The reason for that is, that
must_change_passwd is a proper database column and ActiveRecord will translate certain expected values to Boolean
true. Among these are
true. In contrast
generate_password is a virtual attribute, which is not backed by a database column. Redmine has its own code to handle the translation here. But this custom code only accepts
true, i.e it's missing the
The attached patch fixes this shortcoming by using ActiveRecord's translation method directly.
#1 Updated by Gregor Schmidt over 3 years ago
Please note, that since Rails 5 the way how strings are converted to booleans has changed. Previously anything but a small well known list of values was considered
true. Now anything but a small well know list of strings is considered
false. Consequently, with the proposed change this would also be applied to the
I think this would be a good thing, since it's improving consistency. But I wanted to mention it anyway.