bool UserManager::ChangePassword( ValueSet &requestParms, SsapiResponder *pResponder ){ DesignatorId id; UnicodeString oldPassword, newPassword, password; bool rc = true; ManagedObject *pManagedObject; if( !requestParms.GetGenericValue( (char *)&id, sizeof(id), SSAPI_USER_MANAGER_CHANGE_PASSWORD_OBJECT_ID ) ) rc = false; else if( !requestParms.GetString( SSAPI_USER_MANAGER_CHANGE_PASSWORD_OLD_PASSWORD, &oldPassword ) ) rc = false; else if(!requestParms.GetString( SSAPI_USER_MANAGER_CHANGE_PASSWORD_NEW_PASSWORD, &newPassword ) ) rc = false; if( !rc ) return pResponder->RespondToRequest( SSAPI_EXCEPTION_INVALID_PARAMETER, CTS_SSAPI_INVALID_PARAM_EXCEPTION ); if( !( pManagedObject = GetManagedObject( &id ) ) ) return pResponder->RespondToRequest( SSAPI_EXCEPTION_INVALID_PARAMETER, CTS_SSAPI_OBJECT_DOES_NOT_EXIST_EXCEPTION ); pManagedObject->BuildYourValueSet(); pManagedObject->GetString( SSAPI_USER_FID_PASSWORD, &password ); pManagedObject->Clear(); if( (password == oldPassword) == false ) return pResponder->RespondToRequest( SSAPI_EXCEPTION_SECURITY, CTS_SSAPI_SECURITY_INVALID_PASSWORD ); User *pUser = new User(0); pUser->AddString( &newPassword, SSAPI_USER_FID_PASSWORD ); pUser->AddGenericValue( (char *)&id, sizeof(id), SSAPI_OBJECT_FID_ID ); rc = ModifyUser( pUser, pResponder ); delete pUser; return rc; }