본문 바로가기

분류 전체보기41

정규식 // composables/useEmailCheck.jsimport { ref, computed, watch } from 'vue';import { checkEmailExists } from '@/api/auth';// 간단한 이메일 정규식 예시 (필요시 강화 가능)const EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;export function useEmailCheck() { const email = ref(''); const isFormatValid = ref(null); // true | false | null const isChecking = ref(false); const isDuplicate = ref(null); // true | false | .. 2025. 8. 19.
중복확인 버튼없이 패스워드 입력으로 넘어가면 중복여부를 확인하도록 수정해줘 # 입력 이동 시 자동 중복 검사로 수정하기 (버튼 없이)아래 코드는 “중복 확인” 버튼 없이, 아이디 입력 후 포커스가 비밀번호 입력으로 이동하는 순간(blur 또는 Enter로 다음 필드 포커스) 자동으로 중복 여부를 검사하도록 변경한 예시입니다. 기존 JS 버전(Composition API)을 기준으로 수정했습니다.핵심 변경 사항- 디바운스 실시간 검사 대신, 아이디 인풋에서 포커스가 빠질 때(blur) 또는 Enter로 다음 필드로 이동할 때 중복 검사 실행.- 별도의 “중복 확인” 버튼 제거.- 회원가입 버튼 활성화 조건은 동일하게 유지: 형식 OK && 중복 아님 && 에러 없음.## 1) 컴포저블 업데이트 (composables/useUsernameCheck.js)- watch에 의한 자동 .. 2025. 8. 19.
vue3 에서 회원가입 기능을 만들건데 입력한 아이디 정보가 이미 등록된 아이디인지 체크하는 기능을 구현해줘 아래는 앞서 제공한 TypeScript 예제를 모두 순수 JavaScript로 변환한 코드입니다. 타입 주석, 제네릭, zod 스키마 등 TS 전용 요소를 제거하고, JS 환경에서 그대로 동작하도록 다듬었습니다.# 1) 디바운스 유틸 (utils/debounce.js)```js// utils/debounce.jsexport function debounce(fn, delay = 300) { let timer; return (...args) => { if (timer) clearTimeout(timer); timer = setTimeout(() => fn(...args), delay); };}```# 2) 중복 검사 API 호출 (api/auth.js)```js// api/auth.jsexp.. 2025. 8. 19.
3) 컴포저블: 아이디 중복 검사 로직 (composables/useUsernameCheck.js)// composables/useUsernameCheck.jsimport { ref, watch, computed } from 'vue';import { debounce } from '@/utils/debounce';import { checkUsernameExists } from '@/api/auth';const USERNAME_REGEX = /^[a-z0-9_]{4,16}$/;export function useUsernameCheck() { const username = ref(''); const isFormatValid = ref(null); // true | false | null const .. 2025. 8. 19.
zzz 7. 예외 처리(선택)GlobalExceptionHandler.javapackage com.example.jwt.common;import org.springframework.http.ResponseEntity;import org.springframework.web.bind.MethodArgumentNotValidException;import org.springframework.web.bind.annotation.*;import java.util.Map;@RestControllerAdvicepublic class GlobalExceptionHandler { @ExceptionHandler(IllegalArgumentException.class) public ResponseEntity handle.. 2025. 8. 18.
쿼리 1. 기존 Users 테이블 수정-- 기존 users 테이블 수정 (기본 인증 정보만 유지)ALTER TABLE users ADD COLUMN phone VARCHAR(20) NULL,ADD COLUMN email_verified BOOLEAN DEFAULT FALSE,ADD COLUMN phone_verified BOOLEAN DEFAULT FALSE,ADD COLUMN status ENUM('ACTIVE', 'INACTIVE', 'SUSPENDED', 'PENDING') DEFAULT 'PENDING',ADD COLUMN last_password_change TIMESTAMP NULL,ADD COLUMN failed_login_attempts INT DEFAULT 0,ADD COLUMN locked_.. 2025. 8. 18.