본문 바로가기
카테고리 없음

Quasar with Error handler (validate-rules)

by 린타 2024. 1. 16.

1. setup

$ quasar new boot error-handler

 

2. quasar.config.js EDIT

boot: [
      'firebase',
      'error-handler', // 추가
    ],

 

3. boot/error-handler.js

import { boot } from 'quasar/wrappers';
import { Notify } from 'quasar';
import { getErrorMessage } from 'src/utils/firebase/error-message';

export default boot(async ({ app }) => {
  app.config.errorHandler = (err, instance, info) => {
    console.log('### app.config.errorHandler ###');
    console.log('err: ', err);
    console.log('instance: ', instance);
    console.log('info: ', info);
    Notify.create(getErrorMessage(err.code));
  };
});

 

4. utils/firebase/error-message.js

import ERROR_CODE_JSON from './error-code.json';

export const getErrorMessage = (code) => ERROR_CODE_JSON[code] || `관리자에게 문의해주세요.(${code})`;

 

5. utils/firebase/error-code.json

{
  "auth/invalid-email": "email 사용자 속성에 제공된 값이 잘못되었습니다. 이 값은 문자열 이메일 주소여야 합니다.",
  "auth/missing-password": "누락된 비밀번호",
  "auth/wrong-password": "잘못된 비밀번호 (구글 계정으로 로그인 해보시겠어요?)"
}

 

6. utils/validate-rules.js

const validateRequired = val => !!val || '필수값 입니다!';
const validateEmail = val => {
  const reg =
    /^(?=[a-zA-Z0-9@._%+-]{6,254}$)[a-zA-Z0-9._%+-]{1,64}@(?:[a-zA-Z0-9-]{1,63}\.){1,8}[a-zA-Z]{2,63}$/;
  return reg.test(val) || '이메일 형식이 아닙니다';
};

const validatePassword = val => {
  const reg = /^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,15}$/;
  return (
    reg.test(val) ||
    '비밀번호는 영문, 숫자, 특수기호 조합 8자리 이상 입력하세요'
  );
};

const validatePasswordConfirm = (password, passwordConfirm) =>
  password === passwordConfirm || '비밀번호 값이 일치하지 않습니다!';

export {
  validateRequired,
  validateEmail,
  validatePassword,
  validatePasswordConfirm,
};