하석형 하석형 04-07
250407 하석형 회원관리 유효성 검사
@76c4331cf10d777e72315df7948545d2315ad6fd
client/resources/js/defaultUserInfoParams.js
--- client/resources/js/defaultUserInfoParams.js
+++ client/resources/js/defaultUserInfoParams.js
@@ -8,6 +8,8 @@
   isAddr: false,
   isStts: false,
   isAuthor: false,
+  isCntrlDt: false,
+  isCntrlRsn: false,
 };
 
 // 사용자 정보 객체
@@ -20,6 +22,8 @@
   isAddr: false,
   isStts: true,
   isAuthor: true,
+  isCntrlDt: true,
+  isCntrlRsn: true,
 };
 
 export { defaultAdminInfoParams, defaultUserInfoParams };
(파일 끝에 줄바꿈 문자 없음)
client/resources/js/validateParams.js
--- client/resources/js/validateParams.js
+++ client/resources/js/validateParams.js
@@ -87,7 +87,7 @@
       }
       // 공통
       if (!this.isEmpty(object.newPswd)) {
-        if (this.isEmpty(object.errorPwd) || this.errorPwd == true) {
+        if (this.isEmpty(object.errorPwd) || object.errorPwd == true) {
           alert("비밀번호는 영문, 숫자, 특수문자를 조합하여 입력하세요.");
           this.$refs.newPswd.focus();
           return false;
@@ -97,7 +97,7 @@
           this.$refs.newPswd.focus();
           return false;
         } // 최소 길이
-        if (this.isEmpty(object.pswdChk) || this.pswdChk == true) {
+        if (this.isEmpty(object.pswdChk) || object.pswdChk == true) {
           alert("비밀번호 확인을 올바르게 입력하세요.");
           this.$refs.newPswdChk.focus();
           return false;
@@ -123,6 +123,12 @@
         this.$refs.mblTelno.focus();
         return false;
       } // 최대 길이
+      const telRegex = /^01[016789][0-9]{3,4}[0-9]{4}$/;
+      if(!telRegex.test(key)) {
+        alert("휴대폰번호 형식이 맞지 않습니다.");
+        this.$refs.mblTelno.focus();
+        return false;
+      } // 휴대폰번호 형식 확인
       return true;
     },
 
@@ -133,6 +139,11 @@
         this.$refs.emailId.focus();
         return false;
       } // 입력 여부
+      // let idRegex = /^[a-zA-Z0-9._-]/;
+      // if (!idRegex.test(object.id)) {
+      //   alert("이메일 아이디 형식이 맞지 않습니다.");
+      //   return false;
+      // } // 이메일 아이디 형식 확인
       if (object.select == null || object.select == "") {
         alert("이메일을 선택하세요.");
         this.$refs.emailSelect.focus();
@@ -143,8 +154,14 @@
           alert("이메일 직접입력 란을 입력하세요.");
           this.$refs.emailAddress.focus();
           return false;
-        }
-      } // 직접입력 입력 여부
+        } // 직접입력 입력 여부
+        const addressRegex = /[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i;
+        if (!addressRegex.test(object.address)) {
+          alert("이메일 형식이 맞지 않습니다.");
+          this.$refs.emailAddress.focus();
+          return false;
+        } // 이메일 형식 확인
+      }
       return true;
     },
 
client/views/component/userInfo/UserAuthorList.vue
--- client/views/component/userInfo/UserAuthorList.vue
+++ client/views/component/userInfo/UserAuthorList.vue
@@ -1,6 +1,6 @@
 <template>
 
-  <label class="form-title">사용자 권한</label>
+  <label class="form-title"><span>*</span> 사용자 권한</label>
   <div class="form-group">
     <button  v-show="editMode != 'view'" class="btn sm ico-plus" @click="fnAuthAddModalOpen">권한 추가</button>
     <template v-if="mbrVO.authorList != null && mbrVO.authorList != []">
client/views/component/userInfo/UserInfoInsert.vue
--- client/views/component/userInfo/UserInfoInsert.vue
+++ client/views/component/userInfo/UserInfoInsert.vue
@@ -5,10 +5,11 @@
         <div class="form-box">
           <div class="form-box-title">
             <p>기본정보</p>
+            <p><span>*</span>필수입력</p>
           </div>
           <div class="form-content">
             <div>
-                <label class="form-title">아이디</label>
+                <label class="form-title"><span>*</span> 아이디</label>
                 <input
                   type="text"
                   class="form-control sm"
@@ -21,7 +22,7 @@
                 />
               </div>
               <div>
-                <label class="form-title">이름</label>
+                <label class="form-title"><span>*</span> 이름</label>
                 <input
                   type="text"
                   class="form-control sm"
@@ -34,7 +35,7 @@
               </div>
               <div>
                 <label class="form-title">
-                  <p v-if="pageId == null">비밀번호</p>
+                  <p v-if="pageId == null"><span>*</span> 비밀번호</p>
                   <p v-else>비밀번호변경</p>
                 </label>
                 <div class="form-group">
@@ -57,7 +58,7 @@
               </div>
               <div>
                 <label class="form-title">
-                  <p v-if="pageId == null">비밀번호확인</p>
+                  <p v-if="pageId == null"><span>*</span> 비밀번호확인</p>
                   <p v-else>비밀번호변경 확인</p>
                 </label>
                 <input
@@ -75,7 +76,7 @@
               </div>
               <template v-if="showOpt.isMblNo || showOpt.isTelNo">
                 <div v-if="showOpt.isMblNo">
-                  <label  class="form-title">휴대폰번호</label>
+                  <label  class="form-title"><span>*</span> 휴대폰번호</label>
                   <input
                     type="text"
                     class="form-control sm"
@@ -101,7 +102,7 @@
               </div>
               <template v-if="showOpt.isEml || showOpt.isSmsAgree || showOpt.isEmlAgree">
                 <div v-if="showOpt.isEml" >
-                  <label  class="form-title">이메일</label>
+                  <label  class="form-title"><span>*</span> 이메일</label>
                   <div class="check-area">
                       <input
                         type="text"
@@ -137,7 +138,7 @@
                   </div>
                 </div>
                 <div v-if="showOpt.isSmsAgree">
-                    <label class="form-title">
+                    <label class="form-title"><span>*</span> 
                       문자수신
                     </label>
                     <div class="check-area">
@@ -166,7 +167,7 @@
                     </div>
                   </div>
                   <div v-if="showOpt.isEmlAgree">
-                    <label class="form-title">
+                    <label class="form-title"><span>*</span> 
                       이메일수신
                     </label>
                     <div class="check-area">
@@ -197,7 +198,7 @@
               </template>
               <template  v-if="showOpt.isAddr">
                 <div>
-                  <label class="form-title">우편번호</label>
+                  <label class="form-title"><span>*</span> 우편번호</label>
                       <input
                         type="text"
                         class="form-control sm"
@@ -217,7 +218,7 @@
                       </button>
                 </div>
                 <div>
-                  <label class="form-title">주소</label>
+                  <label class="form-title"><span>*</span> 주소</label>
                   <input
                     type="text"
                     class="form-control sm"
@@ -240,7 +241,7 @@
               </template>
               <template  v-if="showOpt.isStts && pageRole == 'adm'">
                 <div>
-                      <label class="form-title">회원상태</label>
+                      <label class="form-title"><span>*</span> 회원상태</label>
                       <select class="form-select sm" v-model="mbrVO.mbrStts">
                         <option value="1">승인</option>
                         <option value="2">승인대기</option>
@@ -248,7 +249,7 @@
                         <option value="3">차단</option>
                       </select>
                   </div>
-                  <div >
+                  <div v-if="showOpt.isCntrlDt">
                       <label class="form-title">차단일</label>
                       <input
                         type="date"
@@ -258,7 +259,7 @@
                       />
                     </div>
               </template>
-              <div>
+              <div v-if="showOpt.isCntrlRsn">
                 <label class="form-title">차단 사유</label>
                 <input
                   type="text"
@@ -436,13 +437,12 @@
 
     // 비밀번호변경 검증
     pswdCheck() {
+      console.log("비밀번호: ", this.pswd.newPswd);
       if (this.pswd.newPswd != null && this.pswd.newPswd != "") {
         const validate =
-          /^(?=.*[a-zA-z])(?=.*[0-9])(?=.*[$`~!@$!%*#^?&\\(\\)\-_=+])/;
+          /^(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[$`~!@$!%*#^?&()\-_=+])/;
         if (
-          !validate.test(this.pswd.newPswd) ||
-          !this.pswd.newPswd ||
-          this.pswd.newPswd.length < 9
+          !validate.test(this.pswd.newPswd)
         ) {
           this.pswd.errorPwd = true;
         } else if (this.pswd.newPswd != null && this.pswd.newPswd != "") {
client/views/pages/login/Login.vue
--- client/views/pages/login/Login.vue
+++ client/views/pages/login/Login.vue
@@ -133,16 +133,16 @@
           }
 
           let url = this.restoreRedirect("redirect");
-          const ctx = store.state.contextPath;
-          if (ctx !== "") {
-            // redirect 값에서 Context Path 추가
-            url = this.$filters.ctxPath(url);
-          } else {
-            // redirect 값에서 기존 Context Path 제거
-            url = url.replace(/^\/[^\/]+/, ""); // 첫 번째 '/' 이후의 경로만 남김
-          }
-
           if (url != null && url != "") {
+            const ctx = store.state.contextPath;
+            if (ctx !== "") {
+              // redirect 값에서 Context Path 추가
+              url = this.$filters.ctxPath(url);
+            } else {
+              // redirect 값에서 기존 Context Path 제거
+              url = url.replace(/^\/[^\/]+/, ""); // 첫 번째 '/' 이후의 경로만 남김
+            }
+            
             if (url == this.$filters.ctxPath("/searchId.page") || url == this.$filters.ctxPath("/resetPswd.page")) {
               this.$router.push({ path: this.$filters.ctxPath("/main.page") });
             } else {
Add a comment
List