Exemple #1
0
void 
UserManager::CheckAndAddWellknownAccount( StringClass &chassisSerialNumber  ){

	User			*pUser, *pNewUser = NULL;
	U32				i;

	for( i = 0; i < GetManagedObjectCount(); i++ ){
		pUser = (User *)GetManagedObject( i );
		if( pUser->GetUserName() == StringClass(DEFAULT_SECURE_USER_NAME) ){
			pNewUser = pUser;
			break;
		}
	}

	if( pNewUser && (pNewUser->GetPassword() != chassisSerialNumber ) ){
		ValueSet		*pVs = new ValueSet();
		DesignatorId	id = pNewUser->GetDesignatorId();
		UnicodeString	s = pNewUser->GetPassword();
		
		pVs->AddGenericValue( (char *)&id, sizeof(id), SSAPI_USER_MANAGER_CHANGE_PASSWORD_OBJECT_ID );
		pVs->AddString( &s, SSAPI_USER_MANAGER_CHANGE_PASSWORD_OLD_PASSWORD );
		s = UnicodeString(StringClass(chassisSerialNumber));
		pVs->AddString( &s,SSAPI_USER_MANAGER_CHANGE_PASSWORD_NEW_PASSWORD );
		ChangePassword(	*pVs,
						new SsapiLocalResponder(this,
												(LOCAL_EVENT_CALLBACK)METHOD_ADDRESS(UserManager, DummyCallback) ) );
		delete pVs;
	}
	else if( !pNewUser ){
		// create a new dude
		pNewUser = new User( GetListenManager() );
		pNewUser->SetUserName( UnicodeString(StringClass(DEFAULT_SECURE_USER_NAME))  );
		pNewUser->SetPassword( UnicodeString(StringClass(chassisSerialNumber))  );
		AddUser(pNewUser,
				new SsapiLocalResponder(this,
										(LOCAL_EVENT_CALLBACK)METHOD_ADDRESS(UserManager, DummyCallback) ) );
		delete pNewUser;
	}
}