1 USING: accessors namespaces kernel combinators.short-circuit
2 db.tuples db.types furnace.auth furnace.sessions furnace.cache ;
3 IN: furnace.auth.login.permits
5 TUPLE: permit < server-state session uid ;
8 { "session" "SESSION" BIG-INTEGER +not-null+ }
9 { "uid" "UID" { VARCHAR 255 } +not-null+ }
12 : touch-permit ( permit -- )
13 realm get touch-state ;
15 : get-permit-uid ( id -- uid )
18 [ session>> session get id>> = ]
19 [ [ touch-permit ] [ uid>> ] bi ]
22 : make-permit ( uid -- id )
25 session get id>> >>session
26 [ touch-permit ] [ insert-tuple ] [ id>> ] tri ;
28 : delete-permit ( id -- )
29 permit new-server-state delete-tuples ;