입력란 css 수정, 암호화 검색 가능하게 칼럼 추가 입력

This commit is contained in:
2026-04-24 14:46:07 +09:00
parent 9095b1e7a7
commit f0286abc20
6 changed files with 255 additions and 176 deletions

View File

@@ -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) - 검색/중복체크용
} }

View File

@@ -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);

View File

@@ -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

View File

@@ -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');

View 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');
} }
}); });