bool UserManager::Login( User *pUser, SsapiResponder *pResponder ){ User *pManagedObject; bool isAthenticated = false; bool isCorrectUserName = false; pUser->BuildYourselfFromYourValueSet(); for( U32 index = 0; index < GetManagedObjectCount(); index++ ){ pManagedObject = (User *)GetManagedObject( index ); if( pManagedObject->GetUserName() == pUser->GetUserName() ){ isCorrectUserName = true; if( pManagedObject->GetPassword() == pUser->GetPassword() ){ isAthenticated = true; } else { isAthenticated = false; } break; } } if( !isCorrectUserName ) pResponder->RespondToRequest( SSAPI_EXCEPTION_SECURITY, CTS_SSAPI_USERNAME_PASSWORD_INVALID ); else { if( isAthenticated ){ // username as a parameter LogEvent( CTS_SSAPI_EVENT_USER_LOGGED_IN, pManagedObject->GetUserName() ); UpdateWrongLoginCount( pManagedObject, pResponder, false ); } else UpdateWrongLoginCount( pManagedObject, pResponder, true ); } return true; }
LinkedListNavigator<string>* UserNetwork::SearchUsers(string name) { string searchLower = LowerString(name); LinkedListNavigator<string>* ret = new LinkedListNavigator<string>(); users->StartIterator(); User* u; while ((u = users->NextIterator()) != NULL) { if (LowerString(u->GetUserName()).find(searchLower) != string::npos) { ret->AddTail(new string(u->GetUserName())); } } return ret; }
bool UserManager::Logout( User *pUser, SsapiResponder *pResponder ){ pUser->BuildYourselfFromYourValueSet(); DesignatorId id = pUser->GetDesignatorId(); User *pManagedObject = (User *)GetManagedObject( &id ); U32 rc; ValueSet *pReturnSet = new ValueSet; if( pManagedObject ){ rc = SSAPI_RC_SUCCESS; pManagedObject->DeleteOpenSession( pResponder->GetSessionID() ); //TBDGAI if we want to show who is present, we need an event here } else rc = SSAPI_EXCEPTION_SECURITY; ValueSet *pRc = new ValueSet; pRc->AddInt(rc, SSAPI_RETURN_STATUS ); if( rc != SSAPI_RC_SUCCESS ) pRc->AddInt( CTS_SSAPI_USER_WAS_NOT_LOGGED_IN, SSAPI_EXCEPTION_STRING_ID ); pReturnSet->AddValue( pRc, SSAPI_RETURN_STATUS_SET ); pResponder->Respond( pReturnSet, TRUE ); // username as a parameter LogEvent( CTS_SSAPI_EVENT_USER_LOGGED_OUT, pManagedObject->GetUserName() ); delete pReturnSet; delete pRc; return true; }
bool UserManager::AddUser( User *pUser, SsapiResponder *pResponder ){ User *pManagedObject; bool canAddUser = true; ValueSet *pReturnSet = new ValueSet(); UserAccessTableEntry row; pUser->BuildYourselfFromYourValueSet(); // first if such username already exists for( U32 index = 0; index < GetManagedObjectCount(); index++ ){ pManagedObject = (User *)GetManagedObject( index ); if( pUser->GetUserName() == pManagedObject->GetUserName() ){ canAddUser = false; break; } } if( canAddUser ){ pUser->WriteYourselfIntoPtsRow( &row ); m_pUserTable->InsertRow(&row, &m_tempRowId, (pTSCallback_t)METHOD_ADDRESS( UserManager, AddUserReplyHandler ), pResponder ); SetIsReadyToServiceRequests( false ); } else pResponder->RespondToRequest( SSAPI_EXCEPTION_INVALID_PARAMETER, CTS_SSAPI_OBJECT_EXISTS_EXCEPTION ); delete pReturnSet; return true; }
string UserNetwork::GetAllUserNames() { ostringstream allUsers; users->StartIterator(); User* u; while ((u = users->NextIterator()) != NULL) { allUsers << u->GetUserName() << "\n"; } return allUsers.str(); }
UnicodeString UserManager::GetUserNameBySessionId( SESSION_ID sessionID ){ User *pUser; UnicodeString us; if( sessionID == SSAPI_LOCAL_SESSION_ID ){ // for right now --- no localization. TBDGAI return UnicodeString( StringClass( "System" ) ); } else { // check logged in users for( U32 i = 0; i < GetManagedObjectCount(); i++ ){ pUser = (User *)GetManagedObject( i ); if( pUser->IsThisYourSession( sessionID ) ) return pUser->GetUserName(); } } ASSERT(0); return us; }
bool UserManager::DeleteUser( User *pUser, SsapiResponder *pResponder ){ User *pManagedObject; bool canDeleteUser = false; ValueSet *pReturnSet = new ValueSet(); pUser->BuildYourselfFromYourValueSet(); // first if such username already exists for( U32 index = 0; index < GetManagedObjectCount(); index++ ){ pManagedObject = (User *)GetManagedObject( index ); if( pUser->GetUserName() == pManagedObject->GetUserName() ){ canDeleteUser = true; break; } } // check if a user is deleting themselves if( canDeleteUser ){ if( pUser->IsThisYourSession( pResponder->GetSessionID() ) ){ pResponder->RespondToRequest( SSAPI_EXCEPTION_INVALID_PARAMETER, CTS_SSAPI_EXCEPTION_CANNOT_DELETE_USER_AS_LOGGED_IN ); delete pReturnSet; return true; } } if( canDeleteUser ){ m_pUserTable->DeleteRow(pUser->GetDesignatorId().GetRowId(), (pTSCallback_t)METHOD_ADDRESS( UserManager, DeleteUserReplyHandler ), pResponder ); SetIsReadyToServiceRequests( false ); } else pResponder->RespondToRequest( SSAPI_EXCEPTION_INVALID_PARAMETER, CTS_SSAPI_OBJECT_DOES_NOT_EXIST_EXCEPTION ); delete pReturnSet; return true; }