

Merge branch 'master' of http://210.180.118.83/jhpark/cms_frontend
@d19ba4e23398cfdb40871108dd7e34789e1acc7c
--- client/resources/js/defaultUserInfoParams.js
+++ client/resources/js/defaultUserInfoParams.js
... | ... | @@ -8,6 +8,8 @@ |
8 | 8 |
isAddr: false, |
9 | 9 |
isStts: false, |
10 | 10 |
isAuthor: false, |
11 |
+ isCntrlDt: false, |
|
12 |
+ isCntrlRsn: false, |
|
11 | 13 |
}; |
12 | 14 |
|
13 | 15 |
// 사용자 정보 객체 |
... | ... | @@ -20,6 +22,8 @@ |
20 | 22 |
isAddr: false, |
21 | 23 |
isStts: true, |
22 | 24 |
isAuthor: true, |
25 |
+ isCntrlDt: true, |
|
26 |
+ isCntrlRsn: true, |
|
23 | 27 |
}; |
24 | 28 |
|
25 | 29 |
export { defaultAdminInfoParams, defaultUserInfoParams };(파일 끝에 줄바꿈 문자 없음) |
--- client/resources/js/validateParams.js
+++ client/resources/js/validateParams.js
... | ... | @@ -87,7 +87,7 @@ |
87 | 87 |
} |
88 | 88 |
// 공통 |
89 | 89 |
if (!this.isEmpty(object.newPswd)) { |
90 |
- if (this.isEmpty(object.errorPwd) || this.errorPwd == true) { |
|
90 |
+ if (this.isEmpty(object.errorPwd) || object.errorPwd == true) { |
|
91 | 91 |
alert("비밀번호는 영문, 숫자, 특수문자를 조합하여 입력하세요."); |
92 | 92 |
this.$refs.newPswd.focus(); |
93 | 93 |
return false; |
... | ... | @@ -97,7 +97,7 @@ |
97 | 97 |
this.$refs.newPswd.focus(); |
98 | 98 |
return false; |
99 | 99 |
} // 최소 길이 |
100 |
- if (this.isEmpty(object.pswdChk) || this.pswdChk == true) { |
|
100 |
+ if (this.isEmpty(object.pswdChk) || object.pswdChk == true) { |
|
101 | 101 |
alert("비밀번호 확인을 올바르게 입력하세요."); |
102 | 102 |
this.$refs.newPswdChk.focus(); |
103 | 103 |
return false; |
... | ... | @@ -123,6 +123,12 @@ |
123 | 123 |
this.$refs.mblTelno.focus(); |
124 | 124 |
return false; |
125 | 125 |
} // 최대 길이 |
126 |
+ const telRegex = /^01[016789][0-9]{3,4}[0-9]{4}$/; |
|
127 |
+ if(!telRegex.test(key)) { |
|
128 |
+ alert("휴대폰번호 형식이 맞지 않습니다."); |
|
129 |
+ this.$refs.mblTelno.focus(); |
|
130 |
+ return false; |
|
131 |
+ } // 휴대폰번호 형식 확인 |
|
126 | 132 |
return true; |
127 | 133 |
}, |
128 | 134 |
|
... | ... | @@ -133,6 +139,11 @@ |
133 | 139 |
this.$refs.emailId.focus(); |
134 | 140 |
return false; |
135 | 141 |
} // 입력 여부 |
142 |
+ // let idRegex = /^[a-zA-Z0-9._-]/; |
|
143 |
+ // if (!idRegex.test(object.id)) { |
|
144 |
+ // alert("이메일 아이디 형식이 맞지 않습니다."); |
|
145 |
+ // return false; |
|
146 |
+ // } // 이메일 아이디 형식 확인 |
|
136 | 147 |
if (object.select == null || object.select == "") { |
137 | 148 |
alert("이메일을 선택하세요."); |
138 | 149 |
this.$refs.emailSelect.focus(); |
... | ... | @@ -143,8 +154,14 @@ |
143 | 154 |
alert("이메일 직접입력 란을 입력하세요."); |
144 | 155 |
this.$refs.emailAddress.focus(); |
145 | 156 |
return false; |
146 |
- } |
|
147 |
- } // 직접입력 입력 여부 |
|
157 |
+ } // 직접입력 입력 여부 |
|
158 |
+ const addressRegex = /[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i; |
|
159 |
+ if (!addressRegex.test(object.address)) { |
|
160 |
+ alert("이메일 형식이 맞지 않습니다."); |
|
161 |
+ this.$refs.emailAddress.focus(); |
|
162 |
+ return false; |
|
163 |
+ } // 이메일 형식 확인 |
|
164 |
+ } |
|
148 | 165 |
return true; |
149 | 166 |
}, |
150 | 167 |
|
--- client/views/component/userInfo/UserAuthorList.vue
+++ client/views/component/userInfo/UserAuthorList.vue
... | ... | @@ -1,6 +1,6 @@ |
1 | 1 |
<template> |
2 | 2 |
|
3 |
- <label class="form-title">사용자 권한</label> |
|
3 |
+ <label class="form-title"><span>*</span> 사용자 권한</label> |
|
4 | 4 |
<div class="form-group"> |
5 | 5 |
<button v-show="editMode != 'view'" class="btn sm ico-plus" @click="fnAuthAddModalOpen">권한 추가</button> |
6 | 6 |
<template v-if="mbrVO.authorList != null && mbrVO.authorList != []"> |
--- client/views/component/userInfo/UserInfoInsert.vue
+++ client/views/component/userInfo/UserInfoInsert.vue
... | ... | @@ -5,10 +5,11 @@ |
5 | 5 |
<div class="form-box"> |
6 | 6 |
<div class="form-box-title"> |
7 | 7 |
<p>기본정보</p> |
8 |
+ <p><span>*</span>필수입력</p> |
|
8 | 9 |
</div> |
9 | 10 |
<div class="form-content"> |
10 | 11 |
<div class="layout"> |
11 |
- <label class="form-title">아이디</label> |
|
12 |
+ <label class="form-title"><span>*</span> 아이디</label> |
|
12 | 13 |
<input |
13 | 14 |
type="text" |
14 | 15 |
class="form-control sm" |
... | ... | @@ -21,7 +22,7 @@ |
21 | 22 |
/> |
22 | 23 |
</div> |
23 | 24 |
<div class="layout"> |
24 |
- <label class="form-title">이름</label> |
|
25 |
+ <label class="form-title"><span>*</span> 이름</label> |
|
25 | 26 |
<input |
26 | 27 |
type="text" |
27 | 28 |
class="form-control sm" |
... | ... | @@ -34,7 +35,7 @@ |
34 | 35 |
</div> |
35 | 36 |
<div class="layout"> |
36 | 37 |
<label class="form-title"> |
37 |
- <p v-if="pageId == null">비밀번호</p> |
|
38 |
+ <p v-if="pageId == null"><span>*</span> 비밀번호</p> |
|
38 | 39 |
<p v-else>비밀번호변경</p> |
39 | 40 |
</label> |
40 | 41 |
<div class="form-group"> |
... | ... | @@ -57,7 +58,7 @@ |
57 | 58 |
</div> |
58 | 59 |
<div class="layout"> |
59 | 60 |
<label class="form-title"> |
60 |
- <p v-if="pageId == null">비밀번호확인</p> |
|
61 |
+ <p v-if="pageId == null"><span>*</span> 비밀번호확인</p> |
|
61 | 62 |
<p v-else>비밀번호변경 확인</p> |
62 | 63 |
</label> |
63 | 64 |
<input |
... | ... | @@ -75,7 +76,7 @@ |
75 | 76 |
</div> |
76 | 77 |
<template v-if="showOpt.isMblNo || showOpt.isTelNo"> |
77 | 78 |
<div v-if="showOpt.isMblNo" class="layout"> |
78 |
- <label class="form-title">휴대폰번호</label> |
|
79 |
+ <label class="form-title"><span>*</span> 휴대폰번호</label> |
|
79 | 80 |
<input |
80 | 81 |
type="text" |
81 | 82 |
class="form-control sm" |
... | ... | @@ -101,7 +102,7 @@ |
101 | 102 |
</div> |
102 | 103 |
<template v-if="showOpt.isEml || showOpt.isSmsAgree || showOpt.isEmlAgree"> |
103 | 104 |
<div v-if="showOpt.isEml" class="layout"> |
104 |
- <label class="form-title">이메일</label> |
|
105 |
+ <label class="form-title"><span>*</span> 이메일</label> |
|
105 | 106 |
<div class="check-area"> |
106 | 107 |
<input |
107 | 108 |
type="text" |
... | ... | @@ -137,7 +138,7 @@ |
137 | 138 |
</div> |
138 | 139 |
</div> |
139 | 140 |
<div v-if="showOpt.isSmsAgree" class="layout"> |
140 |
- <label class="form-title"> |
|
141 |
+ <label class="form-title"><span>*</span> |
|
141 | 142 |
문자수신 |
142 | 143 |
</label> |
143 | 144 |
<div class="check-area"> |
... | ... | @@ -166,7 +167,7 @@ |
166 | 167 |
</div> |
167 | 168 |
</div> |
168 | 169 |
<div v-if="showOpt.isEmlAgree" class="layout"> |
169 |
- <label class="form-title"> |
|
170 |
+ <label class="form-title"><span>*</span> |
|
170 | 171 |
이메일수신 |
171 | 172 |
</label> |
172 | 173 |
<div class="check-area"> |
... | ... | @@ -197,7 +198,7 @@ |
197 | 198 |
</template> |
198 | 199 |
<template v-if="showOpt.isAddr"> |
199 | 200 |
<div class="layout"> |
200 |
- <label class="form-title">우편번호</label> |
|
201 |
+ <label class="form-title"><span>*</span> 우편번호</label> |
|
201 | 202 |
<input |
202 | 203 |
type="text" |
203 | 204 |
class="form-control sm" |
... | ... | @@ -217,7 +218,7 @@ |
217 | 218 |
</button> |
218 | 219 |
</div> |
219 | 220 |
<div class="layout"> |
220 |
- <label class="form-title">주소</label> |
|
221 |
+ <label class="form-title"><span>*</span> 주소</label> |
|
221 | 222 |
<input |
222 | 223 |
type="text" |
223 | 224 |
class="form-control sm" |
... | ... | @@ -240,7 +241,7 @@ |
240 | 241 |
</template> |
241 | 242 |
<template v-if="showOpt.isStts && pageRole == 'adm'"> |
242 | 243 |
<div class="layout"> |
243 |
- <label class="form-title">회원상태</label> |
|
244 |
+ <label class="form-title"><span>*</span> 회원상태</label> |
|
244 | 245 |
<select class="form-select sm" v-model="mbrVO.mbrStts"> |
245 | 246 |
<option value="1">승인</option> |
246 | 247 |
<option value="2">승인대기</option> |
... | ... | @@ -248,7 +249,7 @@ |
248 | 249 |
<option value="3">차단</option> |
249 | 250 |
</select> |
250 | 251 |
</div> |
251 |
- <div class="layout"> |
|
252 |
+ <div class="layout" v-if="showOpt.isCntrlDt"> |
|
252 | 253 |
<label class="form-title">차단일</label> |
253 | 254 |
<input |
254 | 255 |
type="date" |
... | ... | @@ -258,7 +259,7 @@ |
258 | 259 |
/> |
259 | 260 |
</div> |
260 | 261 |
</template> |
261 |
- <div class="layout"> |
|
262 |
+ <div class="layout" v-if="showOpt.isCntrlRsn"> |
|
262 | 263 |
<label class="form-title">차단 사유</label> |
263 | 264 |
<input |
264 | 265 |
type="text" |
... | ... | @@ -436,13 +437,12 @@ |
436 | 437 |
|
437 | 438 |
// 비밀번호변경 검증 |
438 | 439 |
pswdCheck() { |
440 |
+ console.log("비밀번호: ", this.pswd.newPswd); |
|
439 | 441 |
if (this.pswd.newPswd != null && this.pswd.newPswd != "") { |
440 | 442 |
const validate = |
441 |
- /^(?=.*[a-zA-z])(?=.*[0-9])(?=.*[$`~!@$!%*#^?&\\(\\)\-_=+])/; |
|
443 |
+ /^(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[$`~!@$!%*#^?&()\-_=+])/; |
|
442 | 444 |
if ( |
443 |
- !validate.test(this.pswd.newPswd) || |
|
444 |
- !this.pswd.newPswd || |
|
445 |
- this.pswd.newPswd.length < 9 |
|
445 |
+ !validate.test(this.pswd.newPswd) |
|
446 | 446 |
) { |
447 | 447 |
this.pswd.errorPwd = true; |
448 | 448 |
} else if (this.pswd.newPswd != null && this.pswd.newPswd != "") { |
--- client/views/pages/login/Login.vue
+++ client/views/pages/login/Login.vue
... | ... | @@ -133,16 +133,16 @@ |
133 | 133 |
} |
134 | 134 |
|
135 | 135 |
let url = this.restoreRedirect("redirect"); |
136 |
- const ctx = store.state.contextPath; |
|
137 |
- if (ctx !== "") { |
|
138 |
- // redirect 값에서 Context Path 추가 |
|
139 |
- url = this.$filters.ctxPath(url); |
|
140 |
- } else { |
|
141 |
- // redirect 값에서 기존 Context Path 제거 |
|
142 |
- url = url.replace(/^\/[^\/]+/, ""); // 첫 번째 '/' 이후의 경로만 남김 |
|
143 |
- } |
|
144 |
- |
|
145 | 136 |
if (url != null && url != "") { |
137 |
+ const ctx = store.state.contextPath; |
|
138 |
+ if (ctx !== "") { |
|
139 |
+ // redirect 값에서 Context Path 추가 |
|
140 |
+ url = this.$filters.ctxPath(url); |
|
141 |
+ } else { |
|
142 |
+ // redirect 값에서 기존 Context Path 제거 |
|
143 |
+ url = url.replace(/^\/[^\/]+/, ""); // 첫 번째 '/' 이후의 경로만 남김 |
|
144 |
+ } |
|
145 |
+ |
|
146 | 146 |
if (url == this.$filters.ctxPath("/searchId.page") || url == this.$filters.ctxPath("/resetPswd.page")) { |
147 | 147 |
this.$router.push({ path: this.$filters.ctxPath("/main.page") }); |
148 | 148 |
} else { |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?