return $r;
}
+ /**
+ * @brief Get owner data by nick name
+ *
+ * @param int $nick
+ * @return boolean|array
+ */
+ public static function getOwnerDataByNick($nick)
+ {
+ $user = dba::selectFirst('user', ['uid'], ['nickname' => $nick]);
+ if (!DBM::is_result($user)) {
+ return false;
+ }
+ return self::getOwnerDataById($user['uid']);
+ }
+
/**
* @brief Returns the default group for a given user and network
*
]
);
} else {
- $user = dba::fetch_first('SELECT `uid`, `password`, `legacy_password`
- FROM `user`
- WHERE (`email` = ? OR `username` = ? OR `nickname` = ?)
- AND `blocked` = 0
- AND `account_expired` = 0
- AND `account_removed` = 0
- AND `verified` = 1
- LIMIT 1',
- $user_info,
- $user_info,
- $user_info
- );
+ $fields = ['uid', 'password', 'legacy_password'];
+ $condition = ["(`email` = ? OR `username` = ? OR `nickname` = ?)
+ AND NOT `blocked` AND NOT `account_expired` AND NOT `account_removed` AND `verified`",
+ $user_info, $user_info, $user_info];
+ $user = dba::selectFirst('user', $fields, $condition);
}
if (!DBM::is_result($user)) {
return dba::update('user', $fields, ['uid' => $uid]);
}
+ /**
+ * @brief Checks if a nickname is in the list of the forbidden nicknames
+ *
+ * Check if a nickname is forbidden from registration on the node by the
+ * admin. Forbidden nicknames (e.g. role namess) can be configured in the
+ * admin panel.
+ *
+ * @param string $nickname The nickname that should be checked
+ * @return boolean True is the nickname is blocked on the node
+ */
+ public static function isNicknameBlocked($nickname)
+ {
+ $forbidden_nicknames = Config::get('system', 'forbidden_nicknames', '');
+ // if the config variable is empty return false
+ if (!x($forbidden_nicknames)) {
+ return false;
+ }
+ // check if the nickname is in the list of blocked nicknames
+ $forbidden = explode(',', $forbidden_nicknames);
+ $forbidden = array_map('trim', $forbidden);
+ if (in_array(strtolower($nickname), $forbidden)) {
+ return true;
+ }
+ // else return false
+ return false;
+ }
+
/**
* @brief Catch-all user creation function
*
$confirm = x($data, 'confirm') ? trim($data['confirm']) : '';
$blocked = x($data, 'blocked') ? intval($data['blocked']) : 0;
$verified = x($data, 'verified') ? intval($data['verified']) : 0;
+ $language = x($data, 'language') ? notags(trim($data['language'])) : 'en';
$publish = x($data, 'profile_publish_reg') && intval($data['profile_publish_reg']) ? 1 : 0;
$netpublish = strlen(Config::get('system', 'directory')) ? $publish : 0;
$_SESSION['register'] = 1;
$_SESSION['openid'] = $openid_url;
- $openid = new LightOpenID;
+ $openid = new LightOpenID($a->get_hostname());
$openid->identity = $openid_url;
$openid->returnUrl = System::baseUrl() . '/openid';
$openid->required = ['namePerson/friendly', 'contact/email', 'namePerson'];
if (!valid_email($email) || !Network::isEmailDomainValid($email)) {
throw new Exception(L10n::t('Not a valid email address.'));
}
+ if (self::isNicknameBlocked($nickname)) {
+ throw new Exception(L10n::t('The nickname was blocked from registration by the nodes admin.'));
+ }
if (Config::get('system', 'block_extended_register', false) && dba::exists('user', ['email' => $email])) {
throw new Exception(L10n::t('Cannot use that email.'));
'sprvkey' => $sprvkey,
'verified' => $verified,
'blocked' => $blocked,
+ 'language' => $language,
'timezone' => 'UTC',
'register_date' => DateTimeFormat::utcNow(),
'default-location' => ''