Changed auth cookie duration to 3 days for demo user + remove outdated tokens

This commit is contained in:
emeric
2019-07-26 19:29:08 +02:00
parent 9b902b1a59
commit ed50db7a7a
2 changed files with 22 additions and 1 deletions
+15
View File
@@ -49,6 +49,21 @@ AuthToken::create(Session& session, const std::string& value, const Wt::WDateTim
return res;
}
void
AuthToken::removeExpiredTokens(Session& session, Wt::WDateTime now)
{
session.checkUniqueLocked();
Wt::Dbo::collection<AuthToken::pointer> res = session.getDboSession().find<AuthToken>();
std::vector<AuthToken::pointer> expiredTokens;
for (auto& token : res)
{
if (token->_expiry < now)
token.remove();
}
}
AuthToken::pointer
AuthToken::getByValue(Session& session, const std::string& value)
{
+7 -1
View File
@@ -60,15 +60,21 @@ createAuthToken(Database::IdType userId)
const std::string secret {createSecret()};
const Wt::WDateTime now {Wt::WDateTime::currentDateTime()};
const Wt::WDateTime expiry {now.addYears(1)};
Wt::WDateTime expiry;
{
auto transaction {LmsApp->getDbSession().createUniqueTransaction()};
Database::User::pointer user {Database::User::getById(LmsApp->getDbSession(), userId)};
if (!user)
return;
expiry = user->isDemo() ? now.addDays(7) : now.addYears(1);
Database::AuthToken::create(LmsApp->getDbSession(), secret, expiry, user);
LMS_LOG(UI, DEBUG) << "Created auth token for user '" << user->getLoginName() << "', expiry = " << expiry.toString();
Database::AuthToken::removeExpiredTokens(LmsApp->getDbSession(), now);
}
LmsApp->setCookie(authCookieName,