plugin = $plugin;
$this->hooks();
}
/**
* Initiate our hooks.
*
* @since 0.0.0
*/
public function hooks() {
}
public static function get_user( $username, $password, $action ) {
$username = sanitize_user($username);
$password = trim($password);
$user = apply_filters( 'authenticate', null, $username, $password );
if ( $user == null ) {
$user = new WP_Error( 'authentication_failed', __( 'ERROR: Invalid username, email address or incorrect password.', 'plugin-detective' ) );
}
if ( is_a( $user, 'WP_Error' ) ) {
return $user;
}
if ( !user_can( $user, 'activate_plugins' ) ) {
return new WP_Error( 'permission_denied', __( 'ERROR: This user does not have permission to activate/deactivate plugins', 'plugin-detective' ) );
}
// $slug = sanitize_title( $username.sha1( DB_PASSWORD . $password ).$action );
return $user->data;
}
public static function get_nonce( $username, $password, $action ) {
$username = sanitize_user($username);
$password = trim($password);
$user = apply_filters( 'authenticate', null, $username, $password );
if ( $user == null ) {
$user = new WP_Error( 'authentication_failed', __( 'ERROR: Invalid username, email address or incorrect password.', 'plugin-detective' ) );
}
if ( is_a( $user, 'WP_Error' ) ) {
return $user;
}
if ( !user_can( $user, 'activate_plugins' ) ) {
return new WP_Error( 'permission_denied', __( 'ERROR: This user does not have permission to activate/deactivate plugins', 'plugin-detective' ) );
}
// $slug = sanitize_title( $username.sha1( DB_PASSWORD . $password ).$action );
return self::create_nonce( $action );
}
public static function create_nonce( $action ) {
$uid = 'api';
if ( !empty( $_SERVER['HTTP_USER_AGENT'] ) ) {
$token = $_SERVER['HTTP_USER_AGENT'];
} else {
$token = '';
}
$i = strtotime( gmdate( 'Y-m-d' ) );
return substr( sha1( DB_PASSWORD . $i . '|' . $action . '|' . $uid . '|' . $token ), -12, 10 );
}
public static function verify_nonce( $nonce, $action ) {
$nonce = (string) $nonce;
$uid = 'api';
if ( !empty( $_SERVER['HTTP_USER_AGENT'] ) ) {
$token = $_SERVER['HTTP_USER_AGENT'];
} else {
$token = '';
}
if ( empty( $nonce ) ) {
return false;
}
$i = strtotime( gmdate( 'Y-m-d' ) );
// Nonce generated today (gmt)
$expected = substr( sha1( DB_PASSWORD . $i . '|' . $action . '|' . $uid . '|' . $token ), -12, 10 );
if ( hash_equals( $expected, $nonce ) ) {
return 1;
}
// Nonce generated yesterday (gmt)
$expected = substr( sha1( DB_PASSWORD . ( $i - 24*60*60 ) . '|' . $action . '|' . $uid . '|' . $token ), -12, 10 );
if ( hash_equals( $expected, $nonce ) ) {
return 2;
}
// Invalid nonce
return false;
}
}