DO-61 [feat] 회원가입시 입력값 안정성 확보
- 간단한 이메일 유효성 검사 추가 - 닉네임 글자수 제한 6자 - 비밀번호 글자수 제한 6 < 글자수 < 18 - 프로필 이미지 토글러 버그 수정
This commit is contained in:
parent
4dca270bc8
commit
a968a2b423
@ -1347,7 +1347,19 @@ MonoBehaviour:
|
|||||||
m_Calls: []
|
m_Calls: []
|
||||||
m_OnDeselect:
|
m_OnDeselect:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls:
|
||||||
|
- m_Target: {fileID: 5818338764896528680}
|
||||||
|
m_TargetAssemblyTypeName: SignupPanelController, Assembly-CSharp
|
||||||
|
m_MethodName: OnChangeEndPassword
|
||||||
|
m_Mode: 0
|
||||||
|
m_Arguments:
|
||||||
|
m_ObjectArgument: {fileID: 0}
|
||||||
|
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
||||||
|
m_IntArgument: 0
|
||||||
|
m_FloatArgument: 0
|
||||||
|
m_StringArgument:
|
||||||
|
m_BoolArgument: 0
|
||||||
|
m_CallState: 2
|
||||||
m_OnTextSelection:
|
m_OnTextSelection:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls: []
|
||||||
@ -2141,7 +2153,19 @@ MonoBehaviour:
|
|||||||
m_Calls: []
|
m_Calls: []
|
||||||
m_OnValueChanged:
|
m_OnValueChanged:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls:
|
||||||
|
- m_Target: {fileID: 5818338764896528680}
|
||||||
|
m_TargetAssemblyTypeName: SignupPanelController, Assembly-CSharp
|
||||||
|
m_MethodName: OnChangeNickname
|
||||||
|
m_Mode: 0
|
||||||
|
m_Arguments:
|
||||||
|
m_ObjectArgument: {fileID: 0}
|
||||||
|
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
||||||
|
m_IntArgument: 0
|
||||||
|
m_FloatArgument: 0
|
||||||
|
m_StringArgument:
|
||||||
|
m_BoolArgument: 0
|
||||||
|
m_CallState: 2
|
||||||
m_OnTouchScreenKeyboardStatusChanged:
|
m_OnTouchScreenKeyboardStatusChanged:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls: []
|
||||||
@ -2791,10 +2815,34 @@ MonoBehaviour:
|
|||||||
m_Calls: []
|
m_Calls: []
|
||||||
m_OnSelect:
|
m_OnSelect:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls:
|
||||||
|
- m_Target: {fileID: 5818338764896528680}
|
||||||
|
m_TargetAssemblyTypeName: SignupPanelController, Assembly-CSharp
|
||||||
|
m_MethodName: OnSelectEmail
|
||||||
|
m_Mode: 1
|
||||||
|
m_Arguments:
|
||||||
|
m_ObjectArgument: {fileID: 0}
|
||||||
|
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
||||||
|
m_IntArgument: 0
|
||||||
|
m_FloatArgument: 0
|
||||||
|
m_StringArgument:
|
||||||
|
m_BoolArgument: 0
|
||||||
|
m_CallState: 2
|
||||||
m_OnDeselect:
|
m_OnDeselect:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls:
|
||||||
|
- m_Target: {fileID: 5818338764896528680}
|
||||||
|
m_TargetAssemblyTypeName: SignupPanelController, Assembly-CSharp
|
||||||
|
m_MethodName: OnChangeEndEmail
|
||||||
|
m_Mode: 0
|
||||||
|
m_Arguments:
|
||||||
|
m_ObjectArgument: {fileID: 0}
|
||||||
|
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
||||||
|
m_IntArgument: 0
|
||||||
|
m_FloatArgument: 0
|
||||||
|
m_StringArgument:
|
||||||
|
m_BoolArgument: 0
|
||||||
|
m_CallState: 2
|
||||||
m_OnTextSelection:
|
m_OnTextSelection:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls: []
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
using TMPro;
|
using TMPro;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.Networking;
|
using UnityEngine.Networking;
|
||||||
@ -23,6 +25,8 @@ public class SignupPanelController : MonoBehaviour
|
|||||||
[SerializeField] private Toggle[] imageSelectToggles;
|
[SerializeField] private Toggle[] imageSelectToggles;
|
||||||
private int _selectedImageIndex = 0;
|
private int _selectedImageIndex = 0;
|
||||||
|
|
||||||
|
private bool _emailValid = false;
|
||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
SetToggleInit();
|
SetToggleInit();
|
||||||
@ -43,15 +47,37 @@ public class SignupPanelController : MonoBehaviour
|
|||||||
|
|
||||||
public void OnValueChanged(bool value, int index)
|
public void OnValueChanged(bool value, int index)
|
||||||
{
|
{
|
||||||
|
// 현재 토글을 끄려고 할 때 (value가 false)
|
||||||
|
if (!value && index == _selectedImageIndex)
|
||||||
|
{
|
||||||
|
// 현재 켜져 있는 토글을 다시 켜지 않게 하고
|
||||||
|
imageSelectToggles[index].onValueChanged.RemoveAllListeners();
|
||||||
|
|
||||||
|
// 다른 토글을 켬 (현재 선택된 인덱스가 아닌 다음 토글을 켬)
|
||||||
|
int nextIndex = (index + 1) % imageSelectToggles.Length;
|
||||||
|
_selectedImageIndex = nextIndex;
|
||||||
|
imageSelectToggles[nextIndex].isOn = true;
|
||||||
|
|
||||||
|
// 이벤트 리스너 다시 추가
|
||||||
|
int capturedIndex = index;
|
||||||
|
imageSelectToggles[index].onValueChanged.AddListener((bool val) => OnValueChanged(val, capturedIndex));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 새로운 토글을 선택했을 때
|
||||||
if (value)
|
if (value)
|
||||||
{
|
{
|
||||||
|
int previousIndex = _selectedImageIndex;
|
||||||
_selectedImageIndex = index;
|
_selectedImageIndex = index;
|
||||||
int previousIndex = (_selectedImageIndex == 0) ? 1 : 0;
|
|
||||||
imageSelectToggles[previousIndex].isOn = false;
|
// 선택된 토글이 변경되었을 때만 이전 토글을 끔
|
||||||
|
if (previousIndex != index)
|
||||||
|
{
|
||||||
|
imageSelectToggles[previousIndex].isOn = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void OnClickConfirmButton()
|
public void OnClickConfirmButton()
|
||||||
{
|
{
|
||||||
var email = emailInputField.text;
|
var email = emailInputField.text;
|
||||||
@ -59,7 +85,7 @@ public class SignupPanelController : MonoBehaviour
|
|||||||
var password = passwordInputField.text;
|
var password = passwordInputField.text;
|
||||||
var confirmPassword = confirmPasswordInputField.text;
|
var confirmPassword = confirmPasswordInputField.text;
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(email) || string.IsNullOrEmpty(nickname) ||
|
if (string.IsNullOrEmpty(email) || !_emailValid || string.IsNullOrEmpty(nickname) ||
|
||||||
string.IsNullOrEmpty(password) || string.IsNullOrEmpty(confirmPassword))
|
string.IsNullOrEmpty(password) || string.IsNullOrEmpty(confirmPassword))
|
||||||
{
|
{
|
||||||
// 입력 내용 누락 팝업 표시
|
// 입력 내용 누락 팝업 표시
|
||||||
@ -104,4 +130,63 @@ public class SignupPanelController : MonoBehaviour
|
|||||||
{
|
{
|
||||||
Destroy(gameObject);
|
Destroy(gameObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 이메일 입력을 완료하면 유효성 검사를 진행함
|
||||||
|
public void OnChangeEndEmail(string emailText)
|
||||||
|
{
|
||||||
|
const string emailPattern = @"^[^\s@]+@[^\s@]+\.[^\s@]+$";
|
||||||
|
|
||||||
|
// 입력이 끝났을 때 이메일 형식 검사
|
||||||
|
_emailValid = Regex.IsMatch(emailText, emailPattern);
|
||||||
|
|
||||||
|
// 이메일이 비어있지 않은 경우에만 색상 변경
|
||||||
|
if (!string.IsNullOrEmpty(emailText))
|
||||||
|
{
|
||||||
|
if (_emailValid) return;
|
||||||
|
emailInputField.textComponent.color = Color.red;
|
||||||
|
|
||||||
|
// 이메일 유효하지 않음
|
||||||
|
GameManager.Instance.panelManager.OpenConfirmPanel("올바른 이메일 주소를 입력하세요.", () => {});
|
||||||
|
Debug.Log("이메일 유효성 X");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// 이메일 인풋을 선택했을 때 이메일이 유효하지 않았으면 텍스트를 초기화함
|
||||||
|
public void OnSelectEmail()
|
||||||
|
{
|
||||||
|
if (!_emailValid)
|
||||||
|
{
|
||||||
|
emailInputField.textComponent.color = Color.black;
|
||||||
|
emailInputField.text = String.Empty;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 닉네임 글자 6자 초과하면 마지막 글자를 잘라서 6자로 만듬
|
||||||
|
public void OnChangeNickname(string nicknameText)
|
||||||
|
{
|
||||||
|
const int maxNicknameLength = 6;
|
||||||
|
|
||||||
|
if (nicknameText.Length > maxNicknameLength)
|
||||||
|
{
|
||||||
|
// 글자수가 제한을 초과하면 처음 6글자만 남김
|
||||||
|
string limitedText = nicknameText.Substring(0, maxNicknameLength);
|
||||||
|
nicknameInputField.text = limitedText;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 비밀번호 유효성 검사
|
||||||
|
public void OnChangeEndPassword(string passwordText)
|
||||||
|
{
|
||||||
|
// 비밀번호가 비어 있으면 검사하지 않음
|
||||||
|
if (string.IsNullOrEmpty(passwordText)) return;
|
||||||
|
|
||||||
|
// 비밀번호 글자수 제한 확인
|
||||||
|
if (passwordText.Length < 6 || passwordText.Length > 18)
|
||||||
|
{
|
||||||
|
// 비밀번호 글자 수 제한
|
||||||
|
GameManager.Instance.panelManager.OpenConfirmPanel("비밀번호는 6자 이상 18자 이하로 입력해주세요.", () => {});
|
||||||
|
Debug.Log("비밀번호 글자 수 제한");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user