| Return Type | Function name | Arguments |
|---|---|---|
| hzEcode | hdsExec::Adduser | (hzChain&,hzHttpEvent*,) |
Declared in file: hzDissemino.h
Defined in file : hdsExec.cpp
Function Logic:
Function body:
hzEcode hdsExec::Adduser (hzChain& errorReport, hzHttpEvent* pE)
{
_hzfunc("hdsExec::Adduser") ;
hzList <hzPair>::Iter pi ;
const hdbClass* pUserClass ;
hdbObject objSubscriber ;
hdbObject userObj ;
hzAtom atom ;
hzChain err ;
hzLogger* pLog ;
hdbObjRepos* pUserRepos ;
hzPair pair ;
hzEmaddr ema ;
hzString userclass ;
hzString username ;
hzString password ;
hzString emaStr ;
hzString S ;
uint32_t subsObjId ;
hzEcode rc = E_OK ;
/*
** ** Check basics
** */
if (!m_pApp)
hzexit(E_NOINIT, "No Application") ;
if (!m_pApp->m_ADP.m_pClassSubscriber) return hzerr(E_NOINIT, "Subscriber Class not initialized") ;
if (!m_pApp->m_ADP.m_pReposSubscriber) return hzerr(E_NOINIT, "Subscriber Repos not initialized") ;
userclass = m_pApp->m_ExecParams[m_FstParam] ;
username = m_pApp->m_ExecParams[m_FstParam+1];
password = m_pApp->m_ExecParams[m_FstParam+2];
emaStr = m_pApp->m_ExecParams[m_FstParam+3];
if (!userclass) return hzerr(E_NOINIT, "No user class specified") ;
if (!username) return hzerr(E_NOINIT, "No user name specified") ;
if (!password) return hzerr(E_NOINIT, "No user password specified") ;
if (!emaStr) return hzerr(E_NOINIT, "No user email specified") ;
pUserClass = m_pApp->m_ADP.GetPureClass(userclass) ;
if (!pUserClass)
return hzerr(E_NOTFOUND, "No user class: Class %s not known as a class\n", *userclass) ;
pUserRepos = m_pApp->m_ADP.GetObjRepos(userclass) ;
if (!pUserRepos)
return hzerr(E_NOTFOUND, "No user repository for class %s\n", *userclass) ;
objSubscriber.Init(m_pApp->m_ADP.m_pClassSubscriber) ;
userObj.Init(pUserClass) ;
/*
** ** Set up SUBSCRIBER object
** */
rc = m_pApp->PcEntConv(atom, username, pE) ;
if (rc != E_OK)
return hzwarn(rc, "Error during conversion of username %s", *username) ;
username = atom.Str() ;
rc = m_pApp->m_ADP.m_pReposSubscriber->Exists(subsObjId, m_pApp->m_ADP.m_pMbr_Subscriber_username, atom) ;
if (rc != E_OK)
return hzwarn(rc, "Error during lookup of user %s", *username) ;
if (subsObjId)
return hzwarn(E_DUPLICATE, "User %s already exists", *username) ;
pLog = GetThreadLogger() ;
objSubscriber.SetMbrValue(m_pApp->m_ADP.m_pMbr_Subscriber_username, username) ;
pLog->Log("Set subscriber username to %s\n", *username) ;
rc = m_pApp->PcEntConv(atom, emaStr, pE) ;
if (rc != E_OK)
return hzwarn(rc, "Error during conversion of password %s", *ema) ;
ema = atom.Str() ;
objSubscriber.SetMbrValue(m_pApp->m_ADP.m_pMbr_Subscriber_email, ema) ;
pLog->Log("Set subscriber email %s to %s\n", *ema, *atom.Str()) ;
rc = m_pApp->PcEntConv(atom, password, pE) ;
if (rc != E_OK)
return hzwarn(rc, "Error during conversion of password %s", *password) ;
objSubscriber.SetMbrValue(m_pApp->m_ADP.m_pMbr_Subscriber_userpass, atom.Str()) ;
pLog->Log("Set subscriber password %s to %s\n", *password, *atom.Str()) ;
atom = m_pApp->m_ADP.m_pReposSubscriber->Count() + 1;
objSubscriber.SetValue(m_pApp->m_ADP.m_pMbr_Subscriber_UID, atom) ;
pLog->Log("subscriber UID = %s\n", *atom.Str()) ;
return E_OK ;
}