Defect #28686
closed/users API does not accept boolean-like String values for generate_password
0%
Description
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>test@example.org</mail> <generate_password>true</generate_password> <must_change_passwd>true</must_change_passwd> </user>
The 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 "1"
, "true"
, and 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 "1"
and true
, i.e it's missing the "true"
option.
The attached patch fixes this shortcoming by using ActiveRecord's translation method directly.
Files
Updated by Gregor Schmidt over 6 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 generate_password
field.
I think this would be a good thing, since it's improving consistency. But I wanted to mention it anyway.
Updated by Go MAEDA over 6 years ago
- Status changed from New to Confirmed
- Target version set to 4.1.0
Confirmed the problem. Setting target version to 4.1.0.
Updated by Go MAEDA over 6 years ago
- Status changed from Confirmed to Closed
- Target version changed from 4.1.0 to 4.0.0
- Resolution set to Fixed
Committed. Thank you for detecting and fixing this issue.