305bda06 by Chris Boden

Added Auth library

1 parent b6849213
<?php
class Auth {
const REG_METH_AUTO_REG = 1;
const REG_METH_VALID_EMAIL = 2;
const FORGOT_METH_VALID_EMAIL = 1;
const FORGOT_METH_RAND_PASS = 2;
const ACTION_ACTIVATE = 'activate_account';
public static function make() {
static $made = false;
if (true === $made) {
throw new Exception('Auth has already been instantiated');
}
$made = true;
// if _GET activate self::activate();
}
/**
* Attempts to login the user
* @param {String} $username
* @param {String} $password
* @param {Boolean} $remember
* @returns WP_User instance
* @throws LogicException If headers have already been passed
* @throws InvalidArgumentException If the authentication is invalid
*/
public static function login($username, $password, $remember = true) {
if (headers_sent()) {
throw new LogicException('Unable to login because headers have been sent');
}
$auth = _signon(Array(
'user_login' => $username
, 'user_password' => esc_sql($password)
, 'remember' => $remember
));
$ref = new ReflectionObject($auth);
if ($ref->name == 'WP_User') {
return $auth;
}
throw new InvalidArgumentException('Invalid username/password');
//$auth->get_error_message()); this would be nice except it links to a wp-page
}
/**
* Attempts to log the user out
* @returns Boolean
* @throws LogicException If HTTP headers have already been sent
*/
public static function logout() {
if (headers_sent()) {
throw new LogicException('Unable to logout because headers have been sent');
}
_logout();
return true;
}
public static function register($user_data = Array(), $registration_method) {
}
public static function activate() {
do_action(self::ACTION_ACTIVATE, $user_id);
}
public static function forgot_password($username, $forgot_method) {
}
}
class Auth_Validation {
public static $errors = Array();
/**
* @rule Not blank
* @rule Valid WordPress username
* @returns Boolean
*/
public static function username($val) {
if (empty($val)) {
self::$errors[] = 'Username is blank';
return false;
}
require_once(ABSPATH . WPINC . DIRECTORY_SEPARATOR . 'registration.php');
if (!validate_username($val)) {
self::$errors[] = 'Username must be at least 4 characters, letters and numbers only';
return false;
}
if (username_exists($_POST['reg_username'])) {
self::$errors[] = 'Username already exists';
return false;
}
return true;
}
/**
* @rule Not blank
* @returns Boolean
*/
public static function password($val) {
if (empty($val)) {
self::$errors[] = 'Password can not be blank';
return false;
}
self::$pass_check = $val;
return true;
}
/**
* @rule Valid email address (*@*.*)
* @returns Boolean
*/
public static function email($val) {
if (!(boolean)filter_var($val, FILTER_VALIDATE_EMAIL)) {
self::$errors[] = 'Invalid email address';
return false;
}
if (false !== email_exists($val)) {
self::$errors[] = 'Email address already registered';
return false;
}
return true;
}
}
?>
\ No newline at end of file