createSession method
Implementation
Future<String> createSession(
HttpResponse response,
Map<String, dynamic> data, {
Duration? ttl,
}) async {
final id = _generateSessionId();
final expiresAt = DateTime.now().add(ttl ?? defaultTtl);
switch (driver) {
case 'memory':
_memoryStore[id] = {
...data,
'expires_at': expiresAt.toIso8601String(),
};
break;
case 'file':
final sessions = await _readSessions();
sessions[id] = {
...data,
'expires_at': expiresAt.toIso8601String(),
};
await _writeSessions(sessions);
break;
case 'db':
await DB.query(
'INSERT INTO $dbTable (id, user_id, data, expires_at) VALUES (?, ?, ?, ?)',
positionalParams: [
id,
data['id'],
jsonEncode(data),
expiresAt.toIso8601String(),
],
);
break;
default:
throw Exception('Unknown SESSION_DRIVER: $driver');
}
// Set secure cookie
response.cookies.add(Cookie('FLINTSESSID', id)
..path = '/'
..httpOnly = true
..secure = false);
return id;
}