Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

전화번호 로그인 관련 #2074

Closed
cydemo opened this issue Feb 3, 2023 · 5 comments
Closed

전화번호 로그인 관련 #2074

cydemo opened this issue Feb 3, 2023 · 5 comments
Labels
bug 버그로 확인된 사항 patch available 패치 있음 표시 (bug와 함께 사용)

Comments

@cydemo
Copy link

cydemo commented Feb 3, 2023

  1. member 모듈과 message 모듈의 default 스킨에서 identifier를 user_id와 email_address로만 식별해서 로그인 폼을 출력해주는 것 같습니다.

    <input type="text" cond="$identifier == 'user_id'" name="user_id" id="uid" required placeholder="{$lang->user_id}" title="{$lang->user_id}" />
    <input type="email" cond="$identifier != 'user_id'" name="user_id" id="uid" required placeholder="{$lang->email_address}" title="{$lang->email_address}" />

    <input type="text" name="user_id" id="uid" title="{$lang->user_id}" placeholder="{$lang->user_id}" required autofocus cond="$member_config->identifier != 'email_address'" />
    <input type="email" name="user_id" id="uid" title="{$lang->email_address}" placeholder="{$lang->email_address}" required autofocus cond="$member_config->identifier == 'email_address'" />

    <input type="text" name="user_id" id="uid" title="{$lang->user_id}" placeholder="{$lang->user_id}" required autofocus cond="$member_config->identifier != 'email_address'" />
    <input type="email" name="user_id" id="uid" title="{$lang->email_address}" placeholder="{$lang->email_address}" required autofocus cond="$member_config->identifier == 'email_address'" />

    이들 각각의 경우에 identifier가 phone_number인 경우의 폼도 출력해줘야 할 것 같아요.

  2. 그리고 회원 설정 > 로그인에서 다음과 같이 identifier를 다중 체크했을 때
    image

폼에서는 type이 text가 아니라 email로만 잡혀서 브라우저 자체적으로 전화번호 입력을 필터링해서 튕기는 문제가 발생하더군요.
$identifier 또는 $member_config->identifier를 확인해본 결과, 반환값이 배열이 아니라 배열의 첫 번째 원소로 잡힙니다.
그래서 email로만 입력을 받으려 했던 것 같아요.

@kijin
Copy link
Member

kijin commented Feb 3, 2023

여러 가지 로그인 방식을 동시에 지원할 수도 있기 때문에, 이메일 하나만 선택한 경우 외에는 그냥 input type="text"가 표시되어야 합니다. 즉 두번째와 세번째는 실제 사용에 불편이 없을 것 같고, 첫번째는 수정이 필요하겠네요.

@cydemo
Copy link
Author

cydemo commented Feb 3, 2023

앗, 스킨만 문제가 아니라 $identifier 또는 $member_config->identifier 문제도 있어요.
이메일, 전화번호로 로그인 방법 체크했을 때 $identifier가 email_address로만 처리되는 문제입니다. (원글의 2번 항목)
이렇게 되면 로그인 폼이 email 타입이 되어 전화번호 입력이 어려워집니다.

아마도 로그인 방법 다중 체크 때 입력값을 배열의 첫 번째 원소로 저장하기 때문인 것으로 보입니다.

$args->identifier = array_first($args->identifiers);

@cydemo
Copy link
Author

cydemo commented Feb 3, 2023

아, 다중 체크 문제는 서드파티 스킨에서 $identifier나 $member_config->identifier가 아니라 $member_config->identifiers로 하면 해결될 것 같습니다.

@kijin kijin added the bug 버그로 확인된 사항 label Feb 5, 2023
@kijin
Copy link
Member

kijin commented Feb 25, 2023

우선 482cdc2 에서 identifieremail_address가 아닌 경우에는 항상 <input type="text">로 표시하도록 수정했습니다. 그러나 identifier라는 설정 자체가 구 버전과의 호환성 유지 외에는 더이상 쓸모 없는 값이니, 코어에 포함된 스킨들은 identifiers 배열을 참조하도록 추가 패치하겠습니다.

@kijin kijin added the patch available 패치 있음 표시 (bug와 함께 사용) label Feb 26, 2023
@kijin
Copy link
Member

kijin commented Feb 26, 2023

템플릿에서 배열을 뜯어보는 것은 비효율적일 것 같아서, identifiers의 첫 번째 원소가 아니라 "이메일 이외의 로그인 방법을 하나라도 허용하는가"를 기준으로 identifier의 값을 강제 지정하도록 변경했습니다. 즉, 아이디 또는 전화번호 로그인을 허용할 경우 순서와 관계없이 user_id라는 값이 들어갑니다.

@kijin kijin closed this as completed Jun 21, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug 버그로 확인된 사항 patch available 패치 있음 표시 (bug와 함께 사용)
Projects
None yet
Development

No branches or pull requests

2 participants