Check editor accounts.
A new editor needs a username and a password of at least 12 characters. A persistent login needs an unexpired key and an existing account. Removing an account revokes its persistent logins, and its sessions end.
This commit is contained in:
@@ -75,6 +75,22 @@ class SiteData {
|
||||
return $row['username'] === $params[0] && $row['session'] === $params[1];
|
||||
})), 0, 1);
|
||||
});
|
||||
FakeDb::on('/^SELECT p\.username, p\.session FROM persistent_sessions p JOIN editors e ON e\.username = p\.username\s+WHERE p\.username = \? AND p\.session = \? AND p\.created > DATE_SUB\(now\(\), INTERVAL 1 YEAR\)/', function ($sql, $params) {
|
||||
$editors = array_column(self::$tables['editors'], 'username');
|
||||
$limit = gmdate('Y-m-d H:i:s', strtotime('-1 year'));
|
||||
return array_slice(array_values(array_map(function ($row) {
|
||||
return array('username' => $row['username'], 'session' => $row['session']);
|
||||
}, array_filter(self::$tables['persistent_sessions'], function ($row) use ($params, $editors, $limit) {
|
||||
return $row['username'] === $params[0] && $row['session'] === $params[1]
|
||||
&& in_array($row['username'], $editors, TRUE) && ($row['created'] ?? $limit) > $limit;
|
||||
}))), 0, 1);
|
||||
});
|
||||
FakeDb::on('/^DELETE FROM persistent_sessions WHERE username = \?$/', function ($sql, $params) {
|
||||
self::$tables['persistent_sessions'] = array_values(array_filter(self::$tables['persistent_sessions'], function ($row) use ($params) {
|
||||
return $row['username'] !== $params[0];
|
||||
}));
|
||||
return TRUE;
|
||||
});
|
||||
FakeDb::on('/^INSERT INTO persistent_sessions \(username, session\) VALUES \(\?, \?\)/', function ($sql, $params) {
|
||||
self::$tables['persistent_sessions'][] = array('username' => $params[0], 'session' => $params[1], 'created' => gmdate('Y-m-d H:i:s'));
|
||||
return TRUE;
|
||||
|
||||
Reference in New Issue
Block a user