Пример #1
0
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;
}
Пример #3
0
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;
}
Пример #4
0
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();
}
Пример #6
0
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;
}
Пример #7
0
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;
}