Add cookie-based authentication support

Fixes #1303
This commit is contained in:
Zed
2025-11-15 22:59:35 +01:00
parent 9e95615021
commit f89d2329d2
4 changed files with 56 additions and 18 deletions

View File

@@ -1,15 +1,27 @@
import std/strutils
import jsony
import ../types/session
from ../../types import Session
from ../../types import Session, SessionKind
proc parseSession*(raw: string): Session =
let
session = raw.fromJson(RawSession)
id = session.oauthToken[0 ..< session.oauthToken.find('-')]
let session = raw.fromJson(RawSession)
let kind = if session.kind == "": "oauth" else: session.kind
result = Session(
id: parseBiggestInt(id),
oauthToken: session.oauthToken,
oauthSecret: session.oauthTokenSecret
)
case kind
of "oauth":
let id = session.oauthToken[0 ..< session.oauthToken.find('-')]
result = Session(
kind: SessionKind.oauth,
id: parseBiggestInt(id),
oauthToken: session.oauthToken,
oauthSecret: session.oauthTokenSecret
)
of "cookie":
result = Session(
kind: SessionKind.cookie,
id: 999,
authToken: session.authToken,
ct0: session.ct0
)
else:
raise newException(ValueError, "Unknown session kind: " & kind)

View File

@@ -1,4 +1,7 @@
type
RawSession* = object
kind*: string
oauthToken*: string
oauthTokenSecret*: string
authToken*: string
ct0*: string