123456789101112131415161718192021222324252627282930313233343536373839404142434445openLwt.SyntaxexceptionExceptionofstringletlog_src=Logs.Src.create~doc:"authn""sihl.service.authn"moduleLogs=(valLogs.src_loglog_src:Logs.LOG)moduleMake(SessionService:Session.Sig.SERVICE)(UserService:User.Sig.SERVICE):Sig.SERVICE=structletfind_user_in_session_optctxsession=let*user_id=SessionService.getctxsession~key:"authn"inmatchuser_idwith|None->Lwt.returnNone|Someuser_id->UserService.find_optctx~user_id;;letfind_user_in_sessionctxsession=let*user_id=SessionService.getctxsession~key:"authn"inmatchuser_idwith|None->raise@@Exception"No user found in current session"|Someuser_id->UserService.findctx~user_id;;letauthenticate_sessionctxusersession=SessionService.setctxsession~key:"authn"~value:(User.iduser);;letunauthenticate_sessionctxsession=SessionService.unsetctxsession~key:"authn"letstartctx=Lwt.returnctxletstop_=Lwt.return()letlifecycle=Core.Container.Lifecycle.create"authn"~start~stop~dependencies:[SessionService.lifecycle;UserService.lifecycle];;letconfigureconfiguration=letconfiguration=Core.Configuration.makeconfigurationinCore.Container.Service.create~configurationlifecycle;;end