bool CBaseSecurityManager::authorize(ISecUser & sec_user, ISecResourceList * Resources) { if(sec_user.getAuthenticateStatus() != AS_AUTHENTICATED) { bool bOk = ValidateUser(sec_user); if(bOk == false) return false; } return ValidateResources(sec_user,Resources); }
bool Cws_accountEx::onVerifyUser(IEspContext &context, IEspVerifyUserRequest &req, IEspVerifyUserResponse &resp) { try { ISecUser* usr = context.queryUser(); if(!usr || usr->getAuthenticateStatus() != AS_AUTHENTICATED) { resp.setRetcode(-1); return false; } const char* ver = req.getVersion(); if (!ver || !*ver) { throw MakeStringException(ECLWATCH_OLD_CLIENT_VERSION, "Client version not found"); } int minor = 0; int major = 0; const char* dot1 = strrchr(ver, '.'); if (!dot1) minor = atoi(ver); else if (strlen(dot1) > 1) { minor = atoi(dot1 + 1); if(dot1 > ver) { const char* dot2 = dot1 - 1; while(dot2 > ver && *dot2 != '.') dot2--; if(*dot2 == '.') dot2++; if(dot2 < dot1) { StringBuffer majorstr; majorstr.append(dot1 - dot2, dot2); major = atoi(majorstr.str()); } } } if(major > CUTOFF_MAJOR || (major == CUTOFF_MAJOR && minor >= CUTOFF_MINOR)) { resp.setRetcode(0); return true; } const char* build_ver = getBuildVersion(); if (build_ver && *build_ver) throw MakeStringException(ECLWATCH_OLD_CLIENT_VERSION, "Client version %s (server %s) is out of date.", ver, build_ver); else throw MakeStringException(ECLWATCH_OLD_CLIENT_VERSION, "Client version %s is out of date.", ver); } catch(IException* e) { FORWARDEXCEPTION(context, e, ECLWATCH_INTERNAL_ERROR); } return true; }