2009-11-02 4 views

답변

2

내가 지정 유효성 검사를 추가 할 수 있도록 기존 모듈의 인식 아니지만,이 hook_user()의 '검증'조치를 사용하여이를 구현하기 매우 쉬운 :

function yourModule_user($op, &$edit, &$account, $category = NULL) { 
    // Are we in the validation phase of a new user registration? 
    if ('validate' == $op && 'user_register' == $edit['form_id'] && 'account' == $category) { 
    // Yes, do custom validation... 
    // NOTE: Just an example to validate by email. 
    // Check the other elements in $edit array (e.g. 'name') for more options 
    $mail_is_valid = yourModule_custom_mail_validation($edit['mail']); 
    // Is the mail address OK? 
    if (!$mail_is_valid) { 
     // No, set error on mail form field 
     form_set_error('mail', t('your custom error message')); 
    } 
    } 
} 

이 등록 절차를 중지 할 것 yourModule_custom_mail_validation()이 TRUE를 리턴하지 않는 한 메일 필드의 오류 메시지와 함께 등록 양식을 다시 표시하십시오. 코드가 다음 모든 사용자 편집 양식 제출 출마하지 - 당신은 또한 자신의 계정을 편집 기존 사용자를 위해 일 할 수있는 검증을 원하는 경우에 절은 경우

, 당신은 처음부터

&& 'user_register' == $edit['form_id'] 

부분을 삭제할 수 등록 즉시.

1

LDAP 서버를 사용하여 인증하는 경우 LDAP module이 있습니다. 그것을 확인하십시오.

다른 웹 서비스로 인증하려면 모듈을 작성하고 hook_user, 특히 '로그인'사례를 구현해야합니다. 로그인 할 때 사용자의 자격 증명이 웹 서비스의 자격 증명과 일치하지 않으면 로그 아웃하여 메시지를 표시 할 수 있습니다.

+0

+1 그리고'hook_user' 권고안에 대해서,하지만 'login on check'부분에 대해서는 동의하지 않습니다. 확인 작업은 '확인'작업을 사용하여 * 로그인/등록 전에 * 수행되어야합니다. 그렇게하면 사용자는 처음에 로그인하지 않으므로 다시 로그 아웃 할 필요가 없습니다 - 별도의 답변에서 본 예를 참조하십시오. –

+0

흥미 롭습니다 ... 나는 api.drupal.org의 "validate"문서에서 그걸 발견하지 못했을 것입니다. 조금 더 명확 해지기 위해 재 작성이 필요한 것처럼 보입니다. 그래도 고마워. – theunraveler

+0

@theunraveler : 여기에서 오해를 피하기 위해 - 'validate'액션 중에 form_set_error()를 사용하면 * registration * 이후의 로그인을 막을 수 있습니다. 이는 등록 양식이 유효성을 검사하기 때문입니다 그걸 확인하지 마라). 기존 사용자의 * login *을 방지하는 데는 효과가 없습니다.이 경우 접근 방식이 옵션이 될 수 있습니다 (로그인 양식에 사용자 정의 유효성 검사 콜백을 추가하는 대신). –

관련 문제