Return TypeFunction nameArguments
hzEcodehdsExec::Logon(hzChain&,hzHttpEvent*,)

Declared in file: hzDissemino.h
Defined in file : hdsExec.cpp

Function Logic:

0:START 1:m_Uname hzHttpEvent::Session pInfo 2:pInfo 3:hzChain::Printf 4:Return E_NOTFOUND 5:m_Uname[0]!=(char)37 6:unam 7:hdsApp::PcEntConv rc 8:rc!=E_OK 9:hzChain::Printf 10:Return E_NOTFOUND 11:hzAtom::Str unam 12:hzChain::Printf hdbObjRepos::Exists rc 13:rc!=E_OK 14:hzChain::Printf 15:Return E_NOTFOUND 16:!objId 17:hzChain::Printf 18:Return E_NOTFOUND 19:pInfo hzHttpEvent::Cookie hzMapS::Insert hdbObjRepos::Fetch rc 20:rc!=E_OK 21:hzChain::Printf 22:Return rc 23:hzAtom::Str tmpStr bAccess hdbADP::GetObjRepos pRepos 24:!pRepos 25:hzChain::Printf 26:Return E_NOTFOUND 27:hdbObjRepos::DeltaId pInfo hdbObject::GetValue hzAtom::Int32 pInfo 28:rc==E_OK 29:pInfo pInfo 30:Return rc

Function body:

hzEcode hdsExec::Logon (hzChain& errorReport, hzHttpEvent* pE)
{
   _hzfunc("hdsExec::Logon") ;
   hdbObject       uObj ;
   hzAtom          atom ;
   hdsInfo*        pInfo ;
   hdbObjRepos*    pRepos ;
   hzString        tmpStr ;
   hzString        m_Uname ;
   hzString        unam ;
   uint32_t        bAccess ;
   uint32_t        objId ;
   hzEcode         rc ;
   m_Uname = m_pApp->m_ExecParams[m_FstParam] ;
   pInfo = (hdsInfo*) pE->Session() ;
   if (pInfo)
       { errorReport.Printf("Cannot logon user implied by %s as there is already a session in place\n", *m_Uname) ; return E_NOTFOUND ; }
   if (m_Uname[0]!= CHAR_PERCENT)
       unam = m_Uname ;
   else
   {
       rc = m_pApp->PcEntConv(atom, m_Uname, pE) ;
       if (rc != E_OK)
       {
           errorReport.Printf("Cannot logon user as %s does not evaluate\n", *m_Uname) ;
           return E_NOTFOUND ;
       }
       unam = atom.Str() ;
   }
   errorReport.Printf("Trying username %s\n", *unam) ;
   rc = m_pApp->m_ADP.m_pReposSubscriber->Exists(objId, m_pApp->m_ADP.m_pMbr_Subscriber_username, atom) ;
   if (rc != E_OK)
       { errorReport.Printf("User %s not found\n", *unam) ; return E_NOTFOUND ; }
   if (!objId)
       { errorReport.Printf("User %s not found case 2\n", *unam) ; return E_NOTFOUND ; }
   pInfo->m_SubId = objId ;
   m_pApp->m_SessCookie.Insert(pE->Cookie(), pInfo) ;
   rc = m_pApp->m_ADP.m_pReposSubscriber->Fetch(uObj, objId) ;
   if (rc != E_OK)
   {
       errorReport.Printf("Could not fetch subscriber user type with obj id %d\n", objId) ;
       return rc ;
   }
   tmpStr = atom.Str() ;
   bAccess = m_pApp->m_UserTypes[tmpStr] ;
   pRepos = m_pApp->m_ADP.GetObjRepos(tmpStr) ;
   if (!pRepos)
       { errorReport.Printf("User type [%s] not located\n", *tmpStr) ; return E_NOTFOUND ; }
   pInfo->m_UserRepos = pRepos->DeltaId() ;
   uObj.GetValue(atom, m_pApp->m_ADP.m_pMbr_Subscriber_UID) ;
   pInfo->m_UserId = atom.Int32() ;
   if (rc == E_OK)
   {
       pInfo->m_Access &= ACCESS_ADMIN ;
       pInfo->m_Access |= bAccess ;
   }
   return rc ;
}