let lookup_user uid = List.assoc uid !user_tbl
+let user_of_session sid = let res,_,_ = List.assoc sid !session_tbl in res
+
let create_session uid =
let status = new MatitaEngine.status (Some uid) "cic:/matita" in
let history = [status] in
;;
let deserialize () =
- let utbl_ch = open_in (config_path () ^ "/usertable.dump") in
- user_tbl := Marshal.from_channel utbl_ch;
- close_in utbl_ch;
+ (try
+ let utbl_ch = open_in (config_path () ^ "/usertable.dump") in
+ user_tbl := Marshal.from_channel utbl_ch;
+ close_in utbl_ch;
+ with
+ | Sys_error _ ->
+ user_tbl := []; serialize());
(* old_sessions are now invalid *)
session_tbl := [];
;;
let _ = lookup_user uid in
raise (UsernameCollision uid)
with Not_found ->
+ MatitaFilesystem.checkout uid;
user_tbl := (uid,(pw,None))::!user_tbl;
serialize ()
;;
+
+let reset () =
+ user_tbl := [];
+ session_tbl := [];
+ MatitaFilesystem.reset_lib ();
+ serialize ();
+;;