| Return Type | Function name | Arguments |
|---|---|---|
| hzEcode | hdsExec::Logon | (hzChain&,hzHttpEvent*,) |
Declared in file: hzDissemino.h
Defined in file : hdsExec.cpp
Function Logic:
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 ;
}