Sometimes there’s a need to log-in a member manually, (ie. not through the normal login forms).
In Silverstripe 3 you could do this with Member::login()
, but this is now deprecated in SS4
In Silverstripe 4, the way that this process is handled has changed. You can use Security::setCurrentUser()
, but this only sets the user for the current request and won’t persist. To perform an ‘actual’ log-in, you’ll need to use the IdentityStore
class:
$identityStore = Injector::inst()->get(IdentityStore::class);
$identityStore->logIn($member, $rememberMe, $request);
The login()
method takes a standard member object at the first (mandatory) argument.
SilverStripe\Security\IdentityStore | SilverStripe API for more info. (Don’t forget the relevant use
statements in your code if you’re using namespaces)
(Hat-tip to @kinglozzer for the code snippet!)