1 USING: accessors namespaces kernel combinators.short-circuit
2 db.tuples db.types furnace.auth furnace.sessions furnace.cache ;
4 IN: furnace.auth.login.permits
6 TUPLE: permit < server-state session uid ;
9 { "session" "SESSION" BIG-INTEGER +not-null+ }
10 { "uid" "UID" { VARCHAR 255 } +not-null+ }
13 : touch-permit ( permit -- )
14 realm get touch-state ;
16 : get-permit-uid ( id -- uid )
19 [ session>> session get id>> = ]
20 [ [ touch-permit ] [ uid>> ] bi ]
23 : make-permit ( uid -- id )
26 session get id>> >>session
27 [ touch-permit ] [ insert-tuple ] [ id>> ] tri ;
29 : delete-permit ( id -- )
30 permit new-server-state delete-tuples ;