aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2020-09-17 09:43:39 +0200
committerGravatar GitHub <noreply@github.com> 2020-09-17 09:43:39 +0200
commitbb9b166eb1be73226d2cf978a05a70ed83faec1e (patch)
tree68adbe061fdc1ee3f06ae284fa00e604773e4160
parentf1fe2147a1f551e4d1e5c06421744dc75be0d4ea (diff)
Fix CLI api_password (#3179)
* Fix CLI api_password #fix https://github.com/FreshRSS/FreshRSS/issues/3177 Fix regression from https://github.com/FreshRSS/FreshRSS/pull/2675 * Update cli/_update-or-create-user.php Co-authored-by: oupala <oupala@users.noreply.github.com> Co-authored-by: oupala <oupala@users.noreply.github.com>
-rw-r--r--app/Controllers/apiController.php45
-rw-r--r--cli/_update-or-create-user.php5
-rwxr-xr-xcli/create-user.php8
-rwxr-xr-xcli/update-user.php7
4 files changed, 48 insertions, 17 deletions
diff --git a/app/Controllers/apiController.php b/app/Controllers/apiController.php
index d096ba83f..14dac938c 100644
--- a/app/Controllers/apiController.php
+++ b/app/Controllers/apiController.php
@@ -4,6 +4,31 @@
* This controller manage API-related features.
*/
class FreshRSS_api_Controller extends Minz_ActionController {
+
+ /**
+ * Update the user API password.
+ * Return an error message, or `false` if no error.
+ */
+ public static function updatePassword($apiPasswordPlain) {
+ $username = Minz_Session::param('currentUser');
+ $userConfig = FreshRSS_Context::$user_conf;
+
+ $apiPasswordHash = FreshRSS_password_Util::hash($apiPasswordPlain);
+ $userConfig->apiPasswordHash = $apiPasswordHash;
+
+ $feverKey = FreshRSS_fever_Util::updateKey($username, $apiPasswordPlain);
+ if (!$feverKey) {
+ return _t('feedback.api.password.failed');
+ }
+
+ $userConfig->feverKey = $feverKey;
+ if ($userConfig->save()) {
+ return false;
+ } else {
+ return _t('feedback.api.password.failed');
+ }
+ }
+
/**
* This action updates the user API password.
*
@@ -22,26 +47,16 @@ class FreshRSS_api_Controller extends Minz_ActionController {
}
$apiPasswordPlain = Minz_Request::param('apiPasswordPlain', '', true);
+ $apiPasswordPlain = trim($apiPasswordPlain);
if ($apiPasswordPlain == '') {
Minz_Request::forward($return_url, true);
}
- $username = Minz_Session::param('currentUser');
- $userConfig = FreshRSS_Context::$user_conf;
-
- $apiPasswordHash = FreshRSS_password_Util::hash($apiPasswordPlain);
- $userConfig->apiPasswordHash = $apiPasswordHash;
-
- $feverKey = FreshRSS_fever_Util::updateKey($username, $apiPasswordPlain);
- if (!$feverKey) {
- Minz_Request::bad(_t('feedback.api.password.failed'), $return_url);
- }
-
- $userConfig->feverKey = $feverKey;
- if ($userConfig->save()) {
- Minz_Request::good(_t('feedback.api.password.updated'), $return_url);
+ $error = self::updatePassword($apiPasswordPlain);
+ if ($error) {
+ Minz_Request::bad($error, $return_url);
} else {
- Minz_Request::bad(_t('feedback.api.password.failed'), $return_url);
+ Minz_Request::good(_t('feedback.api.password.updated'), $return_url);
}
}
}
diff --git a/cli/_update-or-create-user.php b/cli/_update-or-create-user.php
index 0da9963f0..2b01fd011 100644
--- a/cli/_update-or-create-user.php
+++ b/cli/_update-or-create-user.php
@@ -4,6 +4,7 @@ require(__DIR__ . '/_cli.php');
$params = array(
'user:',
'password:',
+ 'api_password:',
'language:',
'email:',
'token:',
@@ -22,9 +23,9 @@ $options = getopt('', $params);
if (!validateOptions($argv, $params) || empty($options['user'])) {
fail('Usage: ' . basename($_SERVER['SCRIPT_FILENAME']) .
- " --user username ( --password 'password'" .
+ " --user username ( --password 'password' --api_password 'api_password'" .
" --language en --email user@example.net --token 'longRandomString'" .
- ($isUpdate ? '' : '--no_default_feeds') .
+ ($isUpdate ? '' : ' --no_default_feeds') .
" --purge_after_months 3 --feed_min_articles_default 50 --feed_ttl_default 3600" .
" --since_hours_posts_per_rss 168 --max_posts_per_rss 400 )");
}
diff --git a/cli/create-user.php b/cli/create-user.php
index f98168cf6..dd0c23175 100755
--- a/cli/create-user.php
+++ b/cli/create-user.php
@@ -28,6 +28,14 @@ if (!$ok) {
fail('FreshRSS could not create user!');
}
+if (!empty($options['api_password'])) {
+ $username = cliInitUser($username);
+ $error = FreshRSS_api_Controller::updatePassword($options['api_password']);
+ if ($error) {
+ fail($error);
+ }
+}
+
invalidateHttpCache(FreshRSS_Context::$system_conf->default_user);
echo '• Remember to refresh the feeds of the user: ', $username , "\n",
diff --git a/cli/update-user.php b/cli/update-user.php
index 75c778fe5..953a9d2c0 100755
--- a/cli/update-user.php
+++ b/cli/update-user.php
@@ -17,6 +17,13 @@ if (!$ok) {
fail('FreshRSS could not update user!');
}
+if (!empty($options['api_password'])) {
+ $error = FreshRSS_api_Controller::updatePassword($options['api_password']);
+ if ($error) {
+ fail($error);
+ }
+}
+
invalidateHttpCache($username);
accessRights();