0001-Bug-2503-Improve-setting-of-password-auth_driver.patch
| include/User.h | ||
|---|---|---|
| 21 | 21 |
#include "UserTemplate.h" |
| 22 | 22 |
#include "Quotas.h" |
| 23 | 23 |
#include "ObjectCollection.h" |
| 24 |
#include "NebulaUtil.h" |
|
| 24 | 25 | |
| 25 | 26 |
using namespace std; |
| 26 | 27 | |
| ... | ... | |
| 110 | 111 |
* @param error_str Returns the error reason, if any |
| 111 | 112 |
* @returns -1 if the password is not valid |
| 112 | 113 |
*/ |
| 113 |
int set_password(const string& passwd, string& error_str) |
|
| 114 |
{
|
|
| 115 |
int rc = 0; |
|
| 116 | ||
| 117 |
if (pass_is_valid(passwd, error_str)) |
|
| 118 |
{
|
|
| 119 |
password = passwd; |
|
| 120 |
invalidate_session(); |
|
| 121 |
} |
|
| 122 |
else |
|
| 123 |
{
|
|
| 124 |
rc = -1; |
|
| 125 |
} |
|
| 126 | ||
| 127 |
return rc; |
|
| 128 |
}; |
|
| 114 |
int set_password(const string& passwd, string& error_str); |
|
| 129 | 115 | |
| 130 | 116 |
/** |
| 131 | 117 |
* Returns user password |
| src/rm/RequestManagerUser.cc | ||
|---|---|---|
| 15 | 15 |
/* -------------------------------------------------------------------------- */ |
| 16 | 16 | |
| 17 | 17 |
#include "RequestManagerUser.h" |
| 18 |
#include "NebulaUtil.h" |
|
| 19 | 18 | |
| 20 | 19 |
using namespace std; |
| 21 | 20 | |
| ... | ... | |
| 70 | 69 |
return -1; |
| 71 | 70 |
} |
| 72 | 71 | |
| 73 |
if (user->get_auth_driver() == UserPool::CORE_AUTH) |
|
| 74 |
{
|
|
| 75 |
new_pass = one_util::sha1_digest(new_pass); |
|
| 76 |
} |
|
| 77 | ||
| 78 | 72 |
int rc = user->set_password(new_pass, error_str); |
| 79 | 73 | |
| 80 | 74 |
if ( rc == 0 ) |
| ... | ... | |
| 125 | 119 |
return -1; |
| 126 | 120 |
} |
| 127 | 121 | |
| 128 |
if ( !new_pass.empty() ) |
|
| 129 |
{
|
|
| 130 |
if ( new_auth == UserPool::CORE_AUTH) |
|
| 131 |
{
|
|
| 132 |
new_pass = one_util::sha1_digest(new_pass); |
|
| 133 |
} |
|
| 122 |
rc = user->set_auth_driver(new_auth, error_str); |
|
| 134 | 123 | |
| 135 |
// The password may be invalid, try to change it first |
|
| 136 |
rc = user->set_password(new_pass, error_str); |
|
| 137 |
} |
|
| 138 | ||
| 139 |
if ( rc == 0 ) |
|
| 124 |
if ( rc == 0 && !new_pass.empty() ) |
|
| 140 | 125 |
{
|
| 141 |
rc = user->set_auth_driver(new_auth, error_str);
|
|
| 126 |
rc = user->set_password(new_pass, error_str);
|
|
| 142 | 127 |
} |
| 143 | 128 | |
| 144 | 129 |
if ( rc == 0 ) |
| src/um/User.cc | ||
|---|---|---|
| 273 | 273 |
/* -------------------------------------------------------------------------- */ |
| 274 | 274 |
/* -------------------------------------------------------------------------- */ |
| 275 | 275 | |
| 276 |
int User::set_password(const string& passwd, string& error_str) |
|
| 277 |
{
|
|
| 278 |
int rc = 0; |
|
| 279 | ||
| 280 |
if (pass_is_valid(passwd, error_str)) |
|
| 281 |
{
|
|
| 282 |
if (auth_driver == UserPool::CORE_AUTH) |
|
| 283 |
{
|
|
| 284 |
password = one_util::sha1_digest(passwd); |
|
| 285 |
} |
|
| 286 |
else |
|
| 287 |
{
|
|
| 288 |
password = passwd; |
|
| 289 |
} |
|
| 290 | ||
| 291 |
invalidate_session(); |
|
| 292 |
} |
|
| 293 |
else |
|
| 294 |
{
|
|
| 295 |
rc = -1; |
|
| 296 |
} |
|
| 297 | ||
| 298 |
return rc; |
|
| 299 |
}; |
|
| 300 | ||
| 301 | ||
| 276 | 302 |
bool User::pass_is_valid(const string& pass, string& error_str) |
| 277 | 303 |
{
|
| 278 | 304 |
if ( pass.empty() ) |
| 279 |
- |
|