code: route,nextjs,frontends (3 files)

This commit is contained in:
2025-12-26 01:25:31 +00:00
parent 84bae848c7
commit 0385f52998
3 changed files with 45 additions and 11 deletions

View File

@@ -18,27 +18,30 @@ namespace session {
*/
inline Result<Session> create(InMemoryStore& store, const CreateSessionInput& input) {
if (input.user_id.empty()) {
return Error::validationError("User ID is required");
return Error::validationError("user_id is required");
}
if (input.token.empty()) {
return Error::validationError("token is required");
}
if (store.users.find(input.user_id) == store.users.end()) {
return Error::notFound("User not found: " + input.user_id);
return Error::validationError("User not found: " + input.user_id);
}
if (input.ttl_seconds <= 0) {
return Error::validationError("TTL must be positive");
if (store.session_tokens.find(input.token) != store.session_tokens.end()) {
return Error::conflict("Session token already exists: " + input.token);
}
Session session;
session.id = store.generateId("session", ++store.session_counter);
session.user_id = input.user_id;
session.token = store.generateToken();
session.expires_at = std::chrono::system_clock::now() + std::chrono::seconds(input.ttl_seconds);
session.ip_address = input.ip_address;
session.user_agent = input.user_agent;
session.token = input.token;
session.expires_at = input.expires_at;
session.created_at = std::chrono::system_clock::now();
session.last_activity = session.created_at;
store.sessions[session.id] = session;
store.session_tokens[session.token] = session.id;
return Result<Session>(session);
}