2007-09-14 05:12:21 +02:00
|
|
|
<?php
|
|
|
|
|
2007-09-14 21:10:18 +02:00
|
|
|
/**
|
|
|
|
* Member authenticator
|
|
|
|
*
|
|
|
|
* @author Markus Lanthaler <markus@silverstripe.com>
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-09-14 05:12:21 +02:00
|
|
|
/**
|
|
|
|
* Authenticator for the default "member" method
|
|
|
|
*
|
|
|
|
* @author Markus Lanthaler <markus@silverstripe.com>
|
|
|
|
*/
|
|
|
|
class MemberAuthenticator extends Authenticator {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Method to authenticate an user
|
|
|
|
*
|
|
|
|
* @param array $RAW_data Raw data to authenticate the user
|
2007-09-14 21:10:18 +02:00
|
|
|
* @param Form $form Optional: If passed, better error messages can be
|
|
|
|
* produced by using
|
|
|
|
* {@link Form::sessionMessage()}
|
2007-09-14 05:12:21 +02:00
|
|
|
* @return bool|Member Returns FALSE if authentication fails, otherwise
|
|
|
|
* the member object
|
|
|
|
*/
|
2007-09-16 02:44:30 +02:00
|
|
|
public static function authenticate(array $RAW_data, Form $form = null) {
|
2007-09-14 05:12:21 +02:00
|
|
|
$SQL_user = Convert::raw2sql($RAW_data['Email']);
|
|
|
|
|
2007-09-16 19:39:41 +02:00
|
|
|
// Default login (see {@setDetaultAdmin()})
|
2007-09-27 23:13:59 +02:00
|
|
|
if(Security::check_default_admin($RAW_data['Email'], $RAW_data['Password'])) {
|
2007-09-16 19:39:41 +02:00
|
|
|
$member = Security::findAnAdministrator();
|
|
|
|
} else {
|
|
|
|
$member = DataObject::get_one("Member", "Email = '$SQL_user' AND Password IS NOT NULL");
|
|
|
|
if($member && ($member->checkPassword($RAW_data['Password']) == false)) $member = null;
|
|
|
|
}
|
2007-09-14 05:12:21 +02:00
|
|
|
|
|
|
|
if($member) {
|
|
|
|
Session::clear("BackURL");
|
2007-09-14 21:10:18 +02:00
|
|
|
} else if(!is_null($form)) {
|
|
|
|
$form->sessionMessage(
|
2007-09-15 22:00:00 +02:00
|
|
|
"That doesn't seem to be the right e-mail address or password. Please try again.",
|
2007-09-14 21:10:18 +02:00
|
|
|
"bad");
|
2007-09-14 05:12:21 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
return $member;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Method that creates the login form for this authentication method
|
|
|
|
*
|
2007-09-14 21:10:18 +02:00
|
|
|
* @param Controller The parent controller, necessary to create the
|
|
|
|
* appropriate form action tag
|
2007-09-14 05:12:21 +02:00
|
|
|
* @return Form Returns the login form to use with this authentication
|
|
|
|
* method
|
|
|
|
*/
|
2007-09-16 02:44:30 +02:00
|
|
|
public static function get_login_form(Controller $controller) {
|
2007-09-14 21:10:18 +02:00
|
|
|
return Object::create("MemberLoginForm", $controller, "LoginForm");
|
2007-09-14 05:12:21 +02:00
|
|
|
}
|
2007-09-14 21:13:12 +02:00
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get the name of the authentication method
|
|
|
|
*
|
|
|
|
* @return string Returns the name of the authentication method.
|
|
|
|
*/
|
2007-09-16 02:44:30 +02:00
|
|
|
public static function get_name() {
|
2007-09-15 22:00:00 +02:00
|
|
|
return "E-mail & Password";
|
2007-09-14 21:13:12 +02:00
|
|
|
}
|
2007-09-14 05:12:21 +02:00
|
|
|
}
|
|
|
|
|
2007-09-16 02:44:30 +02:00
|
|
|
|
2007-09-14 05:12:21 +02:00
|
|
|
?>
|