function muIsValidUser($str) { if (yourls_is_API()) { return true; } return $str; }
/** * Check if we'll need interface display function (ie not API or redirection) * */ function yourls_has_interface() { yourls_deprecated_function(__FUNCTION__, '1.7.1'); if (yourls_is_API() or yourls_is_GO()) { return false; } return true; }
/** * Check for valid user via login form or stored cookie. Returns true or an error message * */ function yourls_is_valid_user() { // Allow plugins to short-circuit the whole function $pre = yourls_apply_filter('shunt_is_valid_user', null); if (null !== $pre) { return $pre; } // $unfiltered_valid : are credentials valid? Boolean value. It's "unfiltered" to allow plugins to eventually filter it. $unfiltered_valid = false; // Logout request if (isset($_GET['action']) && $_GET['action'] == 'logout') { yourls_do_action('logout'); yourls_store_cookie(null); return yourls__('Logged out successfully'); } // Check cookies or login request. Login form has precedence. yourls_do_action('pre_login'); // Determine auth method and check credentials if (yourls_is_API() && isset($_REQUEST['timestamp']) && !empty($_REQUEST['timestamp']) && isset($_REQUEST['signature']) && !empty($_REQUEST['signature'])) { yourls_do_action('pre_login_signature_timestamp'); $unfiltered_valid = yourls_check_signature_timestamp(); } elseif (yourls_is_API() && !isset($_REQUEST['timestamp']) && isset($_REQUEST['signature']) && !empty($_REQUEST['signature'])) { yourls_do_action('pre_login_signature'); $unfiltered_valid = yourls_check_signature(); } elseif (isset($_REQUEST['username']) && isset($_REQUEST['password']) && !empty($_REQUEST['username']) && !empty($_REQUEST['password'])) { yourls_do_action('pre_login_username_password'); $unfiltered_valid = yourls_check_username_password(); } elseif (!yourls_is_API() && isset($_COOKIE[yourls_cookie_name()])) { yourls_do_action('pre_login_cookie'); $unfiltered_valid = yourls_check_auth_cookie(); } // Regardless of validity, allow plugins to filter the boolean and have final word $valid = yourls_apply_filter('is_valid_user', $unfiltered_valid); // Login for the win! if ($valid) { yourls_do_action('login'); // (Re)store encrypted cookie if needed if (!yourls_is_API()) { yourls_store_cookie(YOURLS_USER); // Login form : redirect to requested URL to avoid re-submitting the login form on page reload if (isset($_REQUEST['username']) && isset($_REQUEST['password']) && isset($_SERVER['REQUEST_URI'])) { $url = $_SERVER['REQUEST_URI']; yourls_redirect($url); } } // Login successful return true; } // Login failed yourls_do_action('login_failed'); if (isset($_REQUEST['username']) || isset($_REQUEST['password'])) { return yourls__('Invalid username or password'); } else { return yourls__('Please log in'); } }
/** * Check for valid user. Returns true or an error message * */ function yourls_is_valid_user() { static $valid = false; if ($valid) { return true; } $unfiltered_valid = false; // Logout request if (isset($_GET['action']) && $_GET['action'] == 'logout') { yourls_do_action('logout'); yourls_store_cookie(null); return yourls__('Logged out successfully'); } // Check cookies or login request. Login form has precedence. global $yourls_user_passwords; yourls_do_action('pre_login'); // Determine auth method and check credentials if (yourls_is_API() && isset($_REQUEST['timestamp']) && !empty($_REQUEST['timestamp']) && isset($_REQUEST['signature']) && !empty($_REQUEST['signature'])) { yourls_do_action('pre_login_signature_timestamp'); $unfiltered_valid = yourls_check_signature_timestamp(); } elseif (yourls_is_API() && !isset($_REQUEST['timestamp']) && isset($_REQUEST['signature']) && !empty($_REQUEST['signature'])) { yourls_do_action('pre_login_signature'); $unfiltered_valid = yourls_check_signature(); } elseif (isset($_REQUEST['username']) && isset($_REQUEST['password']) && !empty($_REQUEST['username']) && !empty($_REQUEST['password'])) { yourls_do_action('pre_login_username_password'); $unfiltered_valid = yourls_check_username_password(); } elseif (!yourls_is_API() && isset($_COOKIE['yourls_username']) && isset($_COOKIE['yourls_password'])) { yourls_do_action('pre_login_cookie'); $unfiltered_valid = yourls_check_auth_cookie(); } $valid = yourls_apply_filter('is_valid_user', $unfiltered_valid); // Login for the win! if ($valid) { yourls_do_action('login'); // (Re)store encrypted cookie if needed and tell it's ok if (!yourls_is_API() && $unfiltered_valid) { yourls_store_cookie(YOURLS_USER); } return true; } // Login failed yourls_do_action('login_failed'); if (isset($_REQUEST['username']) || isset($_REQUEST['password'])) { return yourls__('Invalid username or password'); } else { return yourls__('Please log in'); } }
function yourls_is_valid_user() { static $valid = false; if ($valid) { return true; } // Logout request if (isset($_GET['mode']) && $_GET['mode'] == 'logout') { yourls_store_cookie(null); return 'Logged out successfully'; } // Check cookies or login request. Login form has precedence. global $yourls_user_passwords; // In the future maybe I'll implement nonces like in WP. Will be something like // ?nonce=fn(login,pwd,action) // Determine auth method and check credentials if (yourls_is_API() && isset($_REQUEST['timestamp']) && !empty($_REQUEST['timestamp']) && isset($_REQUEST['signature']) && !empty($_REQUEST['signature'])) { $valid = yourls_check_signature_timestamp(); } elseif (yourls_is_API() && !isset($_REQUEST['timestamp']) && isset($_REQUEST['signature']) && !empty($_REQUEST['signature'])) { $valid = yourls_check_signature(); } elseif (isset($_REQUEST['username']) && isset($_REQUEST['password']) && !empty($_REQUEST['username']) && !empty($_REQUEST['password'])) { $valid = yourls_check_username_password(); } elseif (!yourls_is_API() && isset($_COOKIE['yourls_username']) && isset($_COOKIE['yourls_password'])) { $valid = yourls_check_auth_cookie(); } // Login for the win! if ($valid) { // (Re)store encrypted cookie and tell it's ok if (!yourls_is_API()) { // No need to store a cookie when used in API mode. yourls_store_cookie(YOURLS_USER); } return true; } // Login failed if (isset($_REQUEST['username']) || isset($_REQUEST['password'])) { return 'Invalid username or password'; } else { return 'Please log in'; } }
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS * IN THE SOFTWARE. * * @category laemmi-yourls-comment-label * @package plugin.php * @author Michael Lämmlein <*****@*****.**> * @copyright ©2015 laemmi * @license http://www.opensource.org/licenses/mit-license.php MIT-License * @version 1.0.0 * @since 23.10.15 */ // No direct call if (!defined('YOURLS_ABSPATH')) { die; } if (!yourls_is_API()) { // Check if AbstractDefault class exists if (class_exists('Laemmi\\Yourls\\Plugin\\AbstractDefault')) { require_once 'lib/Laemmi/Yourls/Plugin/CommentLabel/Plugin.php'; new Laemmi\Yourls\Plugin\CommentLabel\Plugin(['db' => $ydb, 'allowed_groups' => defined('LAEMMI_EASY_LDAP_ALLOWED_GROUPS') ? json_decode(LAEMMI_EASY_LDAP_ALLOWED_GROUPS, true) : []]); } else { if ('activate' === (isset($_GET['action']) ? $_GET['action'] : null) && 'laemmi-yourls-comment-label' === $_GET['plugin']) { echo 'Please install "laemmi-yourls-default-tools" first!'; } } }
<?php // No direct call if (!defined('YOURLS_ABSPATH')) { die; } $auth = yourls_is_valid_user(); if ($auth !== true) { // API mode, if (yourls_is_API()) { $format = isset($_REQUEST['format']) ? $_REQUEST['format'] : 'xml'; $callback = isset($_REQUEST['callback']) ? $_REQUEST['callback'] : ''; yourls_api_output($format, array('simple' => $auth, 'message' => $auth, 'errorCode' => 403, 'callback' => $callback)); // Regular mode } else { yourls_login_screen($auth); } die; } yourls_do_action('auth_successful');
/** * Check if we'll need interface display function (ie not API or redirection) * */ function yourls_has_interface() { if (yourls_is_API() or yourls_is_GO()) { return false; } return true; }
function authmgr_check_apiuser_capability($original, $capability) { // Shortcut - trust approval given by earlier filters if ($original === true) { return true; } // In API mode and not using user/path authn? Let it go. if (yourls_is_API() && !isset($_REQUEST['username'])) { return true; } // TODO: add controls for actions, like // shorturl, stats, db-stats, url-stats, expand return $original; }
/** * Allow several short URLs for the same long URL ? * */ function yourls_allow_duplicate_longurls() { // special treatment if API to check for WordPress plugin requests if (yourls_is_API()) { if (isset($_REQUEST['source']) && $_REQUEST['source'] == 'plugin') { return false; } } return defined('YOURLS_UNIQUE_URLS') && YOURLS_UNIQUE_URLS == false; }