]> git.mxchange.org Git - friendica.git/commitdiff
Move "User::deny()" to own method and update usages
authornupplaPhil <admin+github@philipp.info>
Fri, 21 Feb 2020 22:03:33 +0000 (23:03 +0100)
committernupplaPhil <admin+github@philipp.info>
Sat, 29 Feb 2020 16:10:28 +0000 (17:10 +0100)
mod/regmod.php
src/Console/User.php
src/Model/User.php
src/Module/Admin/Users.php

index 8c71490e0e8612da8154933c26479fb7312075a7..6a31a356a7959e6800b309461d8c7149438caa64 100644 (file)
  */
 
 use Friendica\App;
-use Friendica\Database\DBA;
 use Friendica\DI;
-use Friendica\Model\Register;
 use Friendica\Model\User;
 use Friendica\Module\Security\Login;
 
-// This does not have to go through user_remove() and save the nickname
-// permanently against re-registration, as the person was not yet
-// allowed to have friends on this system
-function user_deny($hash)
-{
-       $register = Register::getByHash($hash);
-       if (!DBA::isResult($register)) {
-               return false;
-       }
-
-       $user = User::getById($register['uid']);
-       if (!DBA::isResult($user)) {
-               exit();
-       }
-
-       DBA::delete('user', ['uid' => $register['uid']]);
-
-       Register::deleteByHash($register['hash']);
-
-       notice(DI::l10n()->t('Registration revoked for %s', $user['username']) . EOL);
-       return true;
-}
-
 function regmod_content(App $a)
 {
        if (!local_user()) {
-               info(DI::l10n()->t('Please login.') . EOL);
+               info(DI::l10n()->t('Please login.'));
                return Login::form(DI::args()->getQueryString(), intval(DI::config()->get('config', 'register_policy')) === \Friendica\Module\Register::CLOSED ? 0 : 1);
        }
 
        if (!is_site_admin() || !empty($_SESSION['submanage'])) {
-               notice(DI::l10n()->t('Permission denied.') . EOL);
+               notice(DI::l10n()->t('Permission denied.'));
                return '';
        }
 
@@ -69,13 +44,15 @@ function regmod_content(App $a)
        $hash = $a->argv[2];
 
        if ($cmd === 'deny') {
-               user_deny($hash);
+               if (User::deny($hash)) {
+                       notice(DI::l10n()->t('Registration revoked'));
+               }
                DI::baseUrl()->redirect('admin/users/');
        }
 
        if ($cmd === 'allow') {
                if (User::allow($hash)) {
-                       info(DI::l10n()->t('Account approved.') . EOL);
+                       info(DI::l10n()->t('Account approved.'));
                }
                DI::baseUrl()->redirect('admin/users/');
        }
index 3166874e0c7e3c011cb1fbe1f2f0f4600226aaeb..85aad7edd802a8ecda9cf4a9ea3c4aba934d3261 100644 (file)
@@ -59,6 +59,7 @@ Usage
        bin/console user password <nickname> [<password>] [-h|--help|-?] [-v]
        bin/console user add [<name> [<nickname> [<email> [<language>]]]] [-h|--help|-?] [-v]
        bin/console user allow [<nickname>] [-h|--help|-?] [-v]
+       bin/console user deny [<nickname>] [-h|--help|-?] [-v]
 
 Description
        Modify user settings per console commands.
@@ -104,7 +105,9 @@ HELP;
                        case 'add':
                                return $this->addUser();
                        case 'allow':
-                               return $this->allowUser();
+                               return $this->pendingUser(true);
+                       case 'deny':
+                               return $this->pendingUser(false);
                        default:
                                throw new \Asika\SimpleConsole\CommandArgsException('Wrong command.');
                }
@@ -200,12 +203,14 @@ HELP;
        }
 
        /**
-        * Allows a user based on it's nickname
+        * Allows or denys a user based on it's nickname
+        *
+        * @param bool $allow True, if the pending user is allowed, false if denies
         *
         * @return bool True, if allow was successful
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
-       public function allowUser()
+       public function pendingUser(bool $allow = true)
        {
                $nick = $this->getArgument(1);
 
@@ -227,6 +232,6 @@ HELP;
                        throw new RuntimeException($this->l10n->t('User is not pending.'));
                }
 
-               return UserModel::allow($pending['hash']);
+               return ($allow) ? UserModel::allow($pending['hash']) : UserModel::deny($pending['hash']);
        }
 }
index 9c6f29ba01e5462751f71ae19eb93bd1f1e0cacd..b1736a7bd9cb30d2046708895b3bed115731db24 100644 (file)
@@ -941,6 +941,34 @@ class User
                );
        }
 
+       /**
+        * Denys a pending registration
+        *
+        * @param string $hash The hash of the pending user
+        *
+        * This does not have to go through user_remove() and save the nickname
+        * permanently against re-registration, as the person was not yet
+        * allowed to have friends on this system
+        *
+        * @return bool True, if the deny was successfull
+        * @throws Exception
+        */
+       public static function deny(string $hash)
+       {
+               $register = Register::getByHash($hash);
+               if (!DBA::isResult($register)) {
+                       return false;
+               }
+
+               $user = User::getById($register['uid']);
+               if (!DBA::isResult($user)) {
+                       return false;
+               }
+
+               return DBA::delete('user', ['uid' => $register['uid']]) &&
+                      Register::deleteByHash($register['hash']);
+       }
+
        /**
         * Creates a new user based on a minimal set and sends an email to this user
         *
index 5f21a07b21146a7283107198f6c26202b25badcc..bc99be2e39921a341a8ac3517ce9ae9817de5428 100644 (file)
@@ -81,14 +81,18 @@ class Users extends BaseAdmin
                if (!empty($_POST['page_users_approve'])) {
                        require_once 'mod/regmod.php';
                        foreach ($pending as $hash) {
-                               User::allow($hash);
+                               if (User::allow($hash)) {
+                                       info(DI::l10n()->t('Account approved.'));
+                               }
                        }
                }
 
                if (!empty($_POST['page_users_deny'])) {
                        require_once 'mod/regmod.php';
                        foreach ($pending as $hash) {
-                               user_deny($hash);
+                               if (User::deny($hash)) {
+                                       notice(DI::l10n()->t('Registration revoked'));
+                               }
                        }
                }