Пример #1
0
STATUS 
UserManager::UpdateWrongLoginCountCallback( void *pContext, STATUS status ){

	UPDATE_INVALID_LOGIN_CELL	*pCell = (UPDATE_INVALID_LOGIN_CELL *)pContext;
	User						*pUser = (User *)GetManagedObject( &pCell->userId );
	ValueSet					*pRc = new ValueSet, *pReturnSet = new ValueSet;

	if( pUser ){
		if( !pCell->numberOfWrongLogins ){
			pUser->AddOpenSession( pCell->pResponder->GetSessionID() );
			pUser->BuildYourValueSet();
			pRc->AddInt( SSAPI_RC_SUCCESS, SSAPI_RETURN_STATUS );
			pReturnSet->AddValue( pUser, SSAPI_USER_MANAGER_LOGIN_USER_OBJECT );
			pReturnSet->AddValue( pRc, SSAPI_RETURN_STATUS_SET );
			pCell->pResponder->Respond( pReturnSet, TRUE );
		}
		else
			pCell->pResponder->RespondToRequest( SSAPI_EXCEPTION_SECURITY, CTS_SSAPI_USERNAME_PASSWORD_INVALID );
		
		pUser->SetNumberOfWrongLogins( pCell->numberOfWrongLogins );

		delete pRc;
		delete pReturnSet;
	}

	SetIsReadyToServiceRequests( true );
	delete pCell;
	return OK;
}
Пример #2
0
bool 
UserManager::ModifyUser( User *pUser, SsapiResponder *pResponder ){
		
	pUser->BuildYourselfFromYourValueSet();

	DesignatorId			id = pUser->GetDesignatorId();
	User					*pManagedObject = (User *) GetManagedObject( &id );
	ValueSet				*pReturnSet = new ValueSet();
	UserAccessTableEntry	row;

	if( pUser->AreThereAnyTooLongStrings( pResponder ) )
		return true;

	if( pManagedObject ){
		User	*p = new User( NULL );
		Value	*pValue;
		pManagedObject->BuildYourValueSet();
		*((ValueSet *)p) = *pManagedObject;
		for( int valuesFound = 0, index = 0; valuesFound < pUser->GetCount(); index++ ){
			if( (pValue = pUser->GetValue( index ) ) != 0 ){
				p->AddValue( pValue, index );
				valuesFound++;
			}
		}
		p->BuildYourselfFromYourValueSet();
		p->WriteYourselfIntoPtsRow( &row );
		delete p;
		m_pUserTable->ModifyRow (pUser->GetDesignatorId().GetRowId(), 
								 &row,
								 (pTSCallback_t)METHOD_ADDRESS( UserManager, ModifyUserReplyHandler ), 
								 pResponder );

		SetIsReadyToServiceRequests( false );
	}
	else
		pResponder->RespondToRequest( SSAPI_EXCEPTION_INVALID_PARAMETER, CTS_SSAPI_OBJECT_DOES_NOT_EXIST_EXCEPTION );

	delete pReturnSet;
	return true;
}
Пример #3
0
STATUS 
UserManager::RowInsertedEventHandler( void *pRow, U32 rowCount, ShadowTable* ){

	Container			*pContainer;

	if( m_isIniting ){
		m_shouldReinit = true;
		return OK;
	}

	User	*pUser = new User( GetListenManager() );
	pUser->BuildYourselfFromPtsRow( (UserAccessTableEntry *)pRow );
	pUser->BuildYourValueSet();
	pUser->m_pUserManager = this;

	pContainer = new SList;
	pContainer->Add( ( CONTAINER_ELEMENT )pUser );
	AddObjectsIntoManagedObjectsVector( *pContainer );
	delete pContainer;

	SetIsReadyToServiceRequests( true );
	return OK;
}
Пример #4
0
STATUS 
UserManager::RowModifiedEventHandler( void *pRow, U32 rowCount, ShadowTable* ){

	if( m_isIniting ){
		m_shouldReinit = true;
		return OK;
	}

	User	*pUser = new User( GetListenManager() ), *pOldUser;
	pUser->BuildYourselfFromPtsRow( (UserAccessTableEntry *)pRow );
	pUser->m_pUserManager = this;
	
	DesignatorId	id = DesignatorId( pUser->GetDesignatorId()  );
	pOldUser = (User *)GetManagedObject( &id );
	pOldUser->BuildYourValueSet();
	pUser->BuildYourValueSet();
	*((ValueSet *)pOldUser) = *pUser;
	pOldUser->BuildYourselfFromYourValueSet();
	delete pUser;
	GetListenManager()->PropagateObjectModifiedEventForObjects( pOldUser );
	
	SetIsReadyToServiceRequests( true );
	return OK;
}