입력란 css 수정, 암호화 검색 가능하게 칼럼 추가 입력
This commit is contained in:
@@ -49,5 +49,7 @@ public class Careers {
|
|||||||
private String fileName; // 원본 파일명
|
private String fileName; // 원본 파일명
|
||||||
private String filePath; // 저장 경로 (DB 기록용)
|
private String filePath; // 저장 경로 (DB 기록용)
|
||||||
private String fileType; // MIME 타입 (예: application/pdf, image/jpeg 등)
|
private String fileType; // MIME 타입 (예: application/pdf, image/jpeg 등)
|
||||||
|
private String telHash; // SHA-256(솔트+tel) - 검색/중복체크용
|
||||||
|
private String emailHash; // SHA-256(솔트+email) - 검색/중복체크용
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,9 @@ public class CareersService {
|
|||||||
saved.setComment(careers.getContent());
|
saved.setComment(careers.getContent());
|
||||||
saved.setName(careers.getName());
|
saved.setName(careers.getName());
|
||||||
saved.setTel(aesUtil.encrypt(careers.getTel()));
|
saved.setTel(aesUtil.encrypt(careers.getTel()));
|
||||||
|
saved.setTelHash(aesUtil.hash(careers.getTel()));
|
||||||
saved.setEmail(aesUtil.encrypt(careers.getEmail()));
|
saved.setEmail(aesUtil.encrypt(careers.getEmail()));
|
||||||
|
saved.setEmailHash(aesUtil.hash(careers.getEmail()));
|
||||||
saved.setTopCode(2);
|
saved.setTopCode(2);
|
||||||
saved.setLeftCode(1);
|
saved.setLeftCode(1);
|
||||||
saved.setSubGubun(1);
|
saved.setSubGubun(1);
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
<mapper namespace="com.owrawww.domain.mapper.CareersMapper">
|
<mapper namespace="com.owrawww.domain.mapper.CareersMapper">
|
||||||
|
|
||||||
<insert id="insert" parameterType="com.owrawww.domain.Careers" useGeneratedKeys="true" keyProperty="id">
|
<insert id="insert" parameterType="com.owrawww.domain.Careers" useGeneratedKeys="true" keyProperty="id">
|
||||||
INSERT INTO application_table (code, title, name, type, phone, email, comment, depth, in_date, top_code, left_code, sub_gubun, solution_gubun, f_real_name, f_name, f_path, f_type)
|
INSERT INTO application_table (code, title, name, type, phone, tel_hash, email, email_hash, comment, depth, in_date, top_code, left_code, sub_gubun, solution_gubun, f_real_name, f_name, f_path, f_type)
|
||||||
VALUES (#{code}, #{title}, #{name}, #{dept}, #{tel}, #{email}, #{comment}, #{depth}, now(), #{topCode}, #{leftCode}, #{subGubun}, #{solutionGubun}, #{orgFileName}, #{fileName}, #{filePath}, #{fileType})
|
VALUES (#{code}, #{title}, #{name}, #{dept}, #{tel}, #{telHash}, #{email}, #{emailHash}, #{comment}, #{depth}, now(), #{topCode}, #{leftCode}, #{subGubun}, #{solutionGubun}, #{orgFileName}, #{fileName}, #{filePath}, #{fileType})
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -313,8 +313,8 @@ $(document).ready(function () {
|
|||||||
const $err = $(rule.err);
|
const $err = $(rule.err);
|
||||||
const val = key === 'agree' ? '' : $el.val();
|
const val = key === 'agree' ? '' : $el.val();
|
||||||
const ok = rule.check(val);
|
const ok = rule.check(val);
|
||||||
$el.toggleClass('is-invalid', !ok).toggleClass('is-valid', ok);
|
$el.toggleClass('is-error', !ok);
|
||||||
$err.toggleClass('visible', !ok);
|
$err.toggleClass('is-show', !ok);
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -340,7 +340,7 @@ $(document).ready(function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (!allOk) {
|
if (!allOk) {
|
||||||
const $firstErr = $form.find('.is-invalid').first();
|
const $firstErr = $form.find('.is-error').first();
|
||||||
if ($firstErr.length) {
|
if ($firstErr.length) {
|
||||||
$firstErr[0].focus();
|
$firstErr[0].focus();
|
||||||
$('html, body').animate({ scrollTop: $firstErr.offset().top - 120 }, 300);
|
$('html, body').animate({ scrollTop: $firstErr.offset().top - 120 }, 300);
|
||||||
@@ -405,7 +405,7 @@ $(document).ready(function () {
|
|||||||
if (e.key === 'Escape' && $('#careersModal').is(':visible')) closeCareersModal();
|
if (e.key === 'Escape' && $('#careersModal').is(':visible')) closeCareersModal();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
$('#careersModal').fadeIn(200);
|
$('#careersModal').css('display', 'flex').hide().fadeIn(200);
|
||||||
$('#careersModalClose').focus();
|
$('#careersModalClose').focus();
|
||||||
$('body').css('overflow', 'hidden');
|
$('body').css('overflow', 'hidden');
|
||||||
}
|
}
|
||||||
@@ -414,8 +414,8 @@ $(document).ready(function () {
|
|||||||
$('#careersModal').fadeOut(200);
|
$('#careersModal').fadeOut(200);
|
||||||
$('body').css('overflow', '');
|
$('body').css('overflow', '');
|
||||||
$form[0].reset();
|
$form[0].reset();
|
||||||
$form.find('.is-invalid, .is-valid').removeClass('is-invalid is-valid');
|
$form.find('.is-error').removeClass('is-error');
|
||||||
$form.find('.form-error-msg.visible').removeClass('visible');
|
$form.find('.form-error-msg.is-show').removeClass('is-show');
|
||||||
if (fileName) {
|
if (fileName) {
|
||||||
fileName.textContent = '파일을 선택해주세요. (이력서, 포트폴리오 등)';
|
fileName.textContent = '파일을 선택해주세요. (이력서, 포트폴리오 등)';
|
||||||
fileName.classList.remove('has-file');
|
fileName.classList.remove('has-file');
|
||||||
|
|||||||
@@ -247,8 +247,8 @@ $(document).ready(function () {
|
|||||||
const $err = $(rule.err);
|
const $err = $(rule.err);
|
||||||
const val = key === 'agree' ? '' : $el.val();
|
const val = key === 'agree' ? '' : $el.val();
|
||||||
const ok = rule.check(val);
|
const ok = rule.check(val);
|
||||||
$el.toggleClass('is-invalid', !ok).toggleClass('is-valid', ok);
|
$el.toggleClass('is-error', !ok);
|
||||||
$err.toggleClass('visible', !ok);
|
$err.toggleClass('is-show', !ok);
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -274,7 +274,7 @@ $(document).ready(function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (!allOk) {
|
if (!allOk) {
|
||||||
const $firstErr = $form.find('.is-invalid').first();
|
const $firstErr = $form.find('.is-error').first();
|
||||||
if ($firstErr.length) {
|
if ($firstErr.length) {
|
||||||
$firstErr[0].focus();
|
$firstErr[0].focus();
|
||||||
$('html, body').animate({ scrollTop: $firstErr.offset().top - 120 }, 300);
|
$('html, body').animate({ scrollTop: $firstErr.offset().top - 120 }, 300);
|
||||||
@@ -327,7 +327,7 @@ $(document).ready(function () {
|
|||||||
if (e.key === 'Escape' && $('#inquiryModal').is(':visible')) closeInquiryModal();
|
if (e.key === 'Escape' && $('#inquiryModal').is(':visible')) closeInquiryModal();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
$('#inquiryModal').fadeIn(200);
|
$('#inquiryModal').css('display', 'flex').hide().fadeIn(200);
|
||||||
$('#inquiryModalClose').focus();
|
$('#inquiryModalClose').focus();
|
||||||
$('body').css('overflow', 'hidden');
|
$('body').css('overflow', 'hidden');
|
||||||
}
|
}
|
||||||
@@ -336,8 +336,8 @@ $(document).ready(function () {
|
|||||||
$('#inquiryModal').fadeOut(200);
|
$('#inquiryModal').fadeOut(200);
|
||||||
$('body').css('overflow', '');
|
$('body').css('overflow', '');
|
||||||
$form[0].reset();
|
$form[0].reset();
|
||||||
$form.find('.is-invalid, .is-valid').removeClass('is-invalid is-valid');
|
$form.find('.is-error').removeClass('is-error');
|
||||||
$form.find('.form-error-msg.visible').removeClass('visible');
|
$form.find('.form-error-msg.is-show').removeClass('is-show');
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user