AutoLoginUrlLogin.php in Auto Login URL 2.x
File
src/AutoLoginUrlLogin.php
View source
<?php
namespace Drupal\auto_login_url;
use Drupal\Component\Utility\Crypt;
use Drupal\Core\Site\Settings;
use Drupal\user\Entity\User;
class AutoLoginUrlLogin {
public function __construct() {
}
public function login($uid, $hash) {
$config = \Drupal::config('auto_login_url.settings');
$connection = \Drupal::database();
$auto_login_url_secret = \Drupal::service('auto_login_url.general')
->getSecret();
$password = \Drupal::service('auto_login_url.general')
->getUserHash($uid);
$key = Settings::getHashSalt() . $auto_login_url_secret . $password;
$result = $connection
->select('auto_login_url', 'a')
->fields('a', [
'id',
'uid',
'destination',
])
->condition('hash', Crypt::hmacBase64($hash, $key), '=')
->execute()
->fetchAssoc();
if (!empty($result) && isset($result['uid'])) {
$account = User::load($result['uid']);
user_login_finalize($account);
$connection
->update('users_field_data')
->fields([
'login' => time(),
])
->condition('uid', $result['uid'])
->execute();
if ($config
->get('delete')) {
$connection
->delete('auto_login_url')
->condition('id', [
$result['id'],
])
->execute();
}
$destination = urldecode($result['destination']);
$destination = strpos($destination, 'http://') !== FALSE || strpos($destination, 'https://') !== FALSE ? $destination : '/' . $destination;
return $destination;
}
return FALSE;
}
}