2017-04-30 05:17:26 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace SilverStripe\Security\MemberAuthenticator;
|
|
|
|
|
2017-05-30 09:42:00 +02:00
|
|
|
use SilverStripe\ORM\ValidationResult;
|
2017-04-30 05:17:26 +02:00
|
|
|
use SilverStripe\Security\Authenticator as BaseAuthenticator;
|
|
|
|
use SilverStripe\Security\Member;
|
|
|
|
|
2017-06-15 04:20:12 +02:00
|
|
|
/**
|
|
|
|
* Provides authentication for the user within the CMS
|
|
|
|
*/
|
2017-05-30 09:42:00 +02:00
|
|
|
class CMSMemberAuthenticator extends MemberAuthenticator
|
2017-04-30 05:17:26 +02:00
|
|
|
{
|
|
|
|
|
|
|
|
public function supportedServices()
|
|
|
|
{
|
|
|
|
return BaseAuthenticator::CMS_LOGIN;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param array $data
|
2017-05-30 09:42:00 +02:00
|
|
|
* @param ValidationResult|null $result
|
|
|
|
* @param Member|null $member
|
2017-04-30 05:17:26 +02:00
|
|
|
* @return Member
|
|
|
|
*/
|
2017-05-30 09:42:00 +02:00
|
|
|
protected function authenticateMember($data, &$result = null, $member = null)
|
2017-04-30 05:17:26 +02:00
|
|
|
{
|
|
|
|
// Attempt to identify by temporary ID
|
|
|
|
if (!empty($data['tempid'])) {
|
|
|
|
// Find user by tempid, in case they are re-validating an existing session
|
|
|
|
$member = Member::member_from_tempid($data['tempid']);
|
|
|
|
if ($member) {
|
2017-06-13 11:04:43 +02:00
|
|
|
$data['Email'] = $member->Email;
|
2017-04-30 05:17:26 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-05-30 09:42:00 +02:00
|
|
|
return parent::authenticateMember($data, $result, $member);
|
2017-04-30 05:17:26 +02:00
|
|
|
}
|
|
|
|
|
2017-05-30 09:42:00 +02:00
|
|
|
/**
|
|
|
|
* @param string $link
|
|
|
|
* @return CMSLoginHandler
|
|
|
|
*/
|
2017-04-30 05:17:26 +02:00
|
|
|
public function getLoginHandler($link)
|
|
|
|
{
|
|
|
|
return CMSLoginHandler::create($link, $this);
|
|
|
|
}
|
2017-05-20 06:32:25 +02:00
|
|
|
}
|