2011-12-02 3 views
1

Apex/Visualforce를 사용하여 사용자 지정 사이트와 통합 된 사용자 지정 포털이 있습니다. 사이트/포털에 사용할 수있는 Visualforce 페이지에서 사용자 지정 암호 변경 기능을 제공하려고합니다.Site.changePassword() 작동에 어려움이 있음

사이트 정적 클래스 메서드는 거의 문서화되어 있지 않으며, developerforce.com을 샅샅이 뒤지고 비어있는 상태로 나왔습니다. 여기에서 시도해 보았습니다. 방법은 다음과 같습니다 (ChangePasswordController 샘플 클래스에 있음)

Site.changePassword(newPassword, verifyNewPassword, oldpassword); 

다음은 키커입니다. 모든 암호 정책을 준수하는 것을 포함하여이 값에 대해 입력 한 데이터에 관계없이이 메서드는 null을 반환하고 은 아무 것도 수행하지 않습니다.. 이 어떤 도움을 사전에

/** 
* An apex page controller that exposes the change password functionality 
*/ 
public with sharing class ChangePasswordController { 
    public String oldPassword {get; set;} 
    public String newPassword {get; set;} 
    public String verifyNewPassword {get; set;}   

    public PageReference changePassword() { 
     return Site.changePassword(newPassword, verifyNewPassword, oldpassword); 
    }  

    public ChangePasswordController() {} 

    public static testMethod void testChangePasswordController() { 
     // Instantiate a new controller with all parameters in the page 
     ChangePasswordController controller = new ChangePasswordController(); 
     controller.oldPassword = '123456'; 
     controller.newPassword = 'qwerty1'; 
     controller.verifyNewPassword = 'qwerty1';     

     System.assertEquals(controller.changePassword(),null);       
    }  
} 

감사합니다 : 그것은 세일즈 포스가 제공하는 샘플 시험 방법에 어설 그대로의 경우가이 증명하는 것이 재미있다!

답변

1

VF 페이지에 <apex:pageMessages> 요소가 있습니까? 아마도 Site 클래스가 오류 메시지를 설정하고 있습니다.이 요소는 페이지에이 요소가 없으면 표시되지 않습니다.

+0

빙고! 여기에 내가 얻는거야 : 오류 : 해당 작업은 활성 사이트 내에서만 허용됩니다. – Adam

+0

문제는 사이트가 확실히 활성화되어 있지만 샌드 박스에 있습니다. 그래서 우리는 실제로 그것을 테스트하지 않고 생산에 그러한 코드를 배치해야한다고 생각합니까 ?? 샌드 박스에서 테스트 할 수있는 방법이 있어야합니다. 아니면이 "활성"사이트 활성 확인란과 다른 활성입니까? - 도와 줘서 고마워, 제레미! – Adam

+0

샌드 박스에서 테스트 할 수 없다면 그건 미친 짓이야. 그러나 귀하가 사이트를 활성화로 설정 한 경우, 나는 그 밖의 다른 것들을 알지 못합니다. –