From 04a06f17816aaffe09f0f88a7c6920a6558b715b Mon Sep 17 00:00:00 2001 From: yangsh Date: Wed, 31 Dec 2025 15:11:40 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B3=B5=ED=86=B5=EB=8D=B0=EC=9D=B4=ED=84=B0?= =?UTF-8?q?=20=EA=B4=80=EB=A6=AC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Config/Routes.php | 4 + app/Controllers/Article/Apt.php | 42 +- app/Controllers/Article/DelChgApt.php | 2 +- app/Controllers/Article/Ground.php | 30 +- app/Controllers/BaseController.php | 16 + app/Controllers/Board/Notice.php | 8 +- app/Controllers/Common/Common.php | 94 ++++ app/Controllers/Home/Home.php | 9 +- app/Controllers/Manage/Areas.php | 12 +- app/Controllers/Manage/Dept.php | 4 +- app/Controllers/Manage/LoginLog.php | 2 +- app/Controllers/Manage/Menu.php | 2 +- app/Controllers/Manage/Permit.php | 6 +- app/Controllers/Manage/Phone.php | 4 +- app/Controllers/Manage/Scomplex.php | 4 +- app/Controllers/Manage/Sms.php | 4 +- app/Controllers/Manage/User.php | 12 +- app/Controllers/Results/Assign.php | 10 +- app/Controllers/Results/Dept.php | 20 +- app/Controllers/Results/M409.php | 8 +- app/Controllers/Results/M410.php | 10 +- app/Controllers/Results/M411.php | 3 +- app/Controllers/Results/M412.php | 17 +- app/Controllers/Results/M415.php | 3 +- app/Controllers/Results/M416.php | 10 +- app/Controllers/Results/M417.php | 6 +- app/Controllers/Results/Person.php | 10 +- app/Controllers/Results/Summary.php | 16 +- app/Controllers/V2/M701.php | 39 +- app/Helpers/function_helper.php | 30 ++ app/Models/manage/UserModel.php | 54 +++ app/Models/v2/M701Model.php | 171 ++++++++ app/Views/layouts/main.php | 4 + app/Views/layouts/widget/pwModal.php | 218 ++++++++++ app/Views/pages/v2/m701/detail.php | 599 ++++++++++++++++++++++++++ app/Views/pages/v2/m701/lists.php | 7 +- 36 files changed, 1351 insertions(+), 139 deletions(-) create mode 100644 app/Views/layouts/widget/pwModal.php create mode 100644 app/Views/pages/v2/m701/detail.php diff --git a/app/Config/Routes.php b/app/Config/Routes.php index b89b327..37b64cb 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -25,6 +25,9 @@ $routes->get('/home/getHomeFaxCount', to: 'Home\Home::getHomeFaxCount'); // 팩 $routes->group('common', ['namespace' => 'App\Controllers\Common'], function ($routes) { $routes->get('common/getVrfcCode', 'Common::getVrfcCode'); + + $routes->post('common/changeUserPass', 'Common::changeUserPass'); // 비밀번호변경 + }); /** @@ -58,6 +61,7 @@ $routes->group('', ['namespace' => 'App\Controllers\V2'], static function ($rout */ $routes->group('m701', static function ($routes) { $routes->get('m701a/lists', 'M701::lists'); + $routes->get('m701a/detail/(:num)', 'M701::detail/$1'); /** * 확인매물현황 - API diff --git a/app/Controllers/Article/Apt.php b/app/Controllers/Article/Apt.php index 311a6d9..a9dfb08 100644 --- a/app/Controllers/Article/Apt.php +++ b/app/Controllers/Article/Apt.php @@ -25,13 +25,13 @@ class Apt extends BaseController $team = $this->aptModel->getTeamList(); // 팀 $user = $this->aptModel->getUserList(); // 유저 - return view("pages/article/lists", [ - 'codes' => $codes, - 'sido' => $sido, - 'bonbu' => $bonbu, - 'team' => $team, - 'user' => $user, - ]); + $this->data['codes'] = $codes; + $this->data['sido'] = $sido; + $this->data['bonbu'] = $bonbu; + $this->data['team'] = $team; + $this->data['user'] = $user; + + return view("pages/article/lists", $this->data); } // 아파트단지목록 조회 @@ -411,22 +411,20 @@ class Apt extends BaseController } } - // return print_r($image); + $this->data['apt'] = $apt; + $this->data['bonbu'] = $bonbu; + $this->data['team'] = $team; + $this->data['user'] = $user; + $this->data['code1'] = $code1; + $this->data['code2'] = $code2; + $this->data['video'] = $video; + $this->data['image'] = $image; + $this->data['vdo'] = $vdo; + $this->data['history'] = $history; + $this->data['cateInfo'] = $cateInfo; + $this->data['cntAllPho'] = $cntAllPho; - return view("pages/article/detail", [ - 'apt' => $apt, - 'bonbu' => $bonbu, - 'team' => $team, - 'user' => $user, - 'code1' => $code1, - 'code2' => $code2, - 'video' => $video, - 'image' => $image, - 'vdo' => $vdo, - 'history' => $history, - 'cateInfo' => $cateInfo, - 'cntAllPho' => $cntAllPho - ]); + return view("pages/article/detail", $this->data); } public function cateJson() diff --git a/app/Controllers/Article/DelChgApt.php b/app/Controllers/Article/DelChgApt.php index 8b30e16..47c5bbc 100644 --- a/app/Controllers/Article/DelChgApt.php +++ b/app/Controllers/Article/DelChgApt.php @@ -19,7 +19,7 @@ class DelChgApt extends BaseController public function lists(): string { - return view("pages/article/delChgView"); + return view("pages/article/delChgView", $this->data); } diff --git a/app/Controllers/Article/Ground.php b/app/Controllers/Article/Ground.php index f374494..42c4ad3 100644 --- a/app/Controllers/Article/Ground.php +++ b/app/Controllers/Article/Ground.php @@ -31,13 +31,13 @@ class Ground extends BaseController $team = $this->model->getTeamList(); // 팀 $user = $this->model->getUserList(); // 유저 - return view("pages/article/lists2", [ - 'codes' => $codes, - 'sido' => $sido, - 'bonbu' => $bonbu, - 'team' => $team, - 'user' => $user, - ]); + $this->data['codes'] = $codes; + $this->data['sido'] = $sido; + $this->data['bonbu'] = $bonbu; + $this->data['team'] = $team; + $this->data['user'] = $user; + + return view("pages/article/lists2", $this->data); } // 아파트단지목록 조회 @@ -281,14 +281,14 @@ class Ground extends BaseController // 변경이력 $history = $this->model->getHistory($rcpt_no); - return view("pages/article/detail2", [ - 'bonbu' => $bonbu, - 'team' => $team, - 'user' => $user, - 'apt' => $apt, - 'rdata' => $rdata, - 'history' => $history, - ]); + $this->data['bonbu'] = $bonbu; + $this->data['team'] = $team; + $this->data['user'] = $user; + $this->data['apt'] = $apt; + $this->data['rdata'] = $rdata; + $this->data['history'] = $history; + + return view("pages/article/detail2", $this->data); } // 메모저장 diff --git a/app/Controllers/BaseController.php b/app/Controllers/BaseController.php index f3863b9..4bddc0c 100644 --- a/app/Controllers/BaseController.php +++ b/app/Controllers/BaseController.php @@ -3,6 +3,7 @@ namespace App\Controllers; use App\Models\common\MenuModel; +use App\Models\manage\UserModel; use CodeIgniter\Controller; abstract class BaseController extends Controller @@ -23,5 +24,20 @@ abstract class BaseController extends Controller $menuModel = new MenuModel(); $menus = $menuModel->getMenuList(session('usr_level')); $this->data['menus'] = $menus["mainMenu"]; + + + if (!empty(session('usr_id'))) { + // 비밀번호 변경일 체크 + $userModel = new UserModel(); + $usr_id = session('usr_id'); + $diff = $userModel->chkChgPwDiff($usr_id); + + if ($diff >= 1) { + $this->data['pwExpire'] = true; + } else { + $this->data['pwExpire'] = false; + } + } + } } diff --git a/app/Controllers/Board/Notice.php b/app/Controllers/Board/Notice.php index 02a9aa9..381631a 100644 --- a/app/Controllers/Board/Notice.php +++ b/app/Controllers/Board/Notice.php @@ -16,7 +16,7 @@ class Notice extends BaseController public function notice(): string { - return view('pages/board/notice'); + return view('pages/board/notice', $this->data); } @@ -61,7 +61,7 @@ class Notice extends BaseController throw \CodeIgniter\Exceptions\PageNotFoundException::forPageNotFound(); } - return view('pages/board/noticeDetail', $data); + return view('pages/board/noticeDetail', array_merge($this->data, $data)); } // 첨부파일 다운로드 @@ -103,7 +103,7 @@ class Notice extends BaseController // 공지사항 작성 화면 public function write(): string { - return view('pages/board/noticeWrite'); + return view('pages/board/noticeWrite', $this->data); } // 공지사항 작성 @@ -228,7 +228,7 @@ class Notice extends BaseController } - return view('pages/board/noticeModify', $data); + return view('pages/board/noticeModify', array_merge($this->data, $data)); } diff --git a/app/Controllers/Common/Common.php b/app/Controllers/Common/Common.php index c06aafa..315211a 100644 --- a/app/Controllers/Common/Common.php +++ b/app/Controllers/Common/Common.php @@ -3,14 +3,17 @@ namespace App\Controllers\Common; use App\Controllers\BaseController; use App\Models\common\CommonModel; +use App\Models\manage\UserModel; class Common extends BaseController { private $model; + private $userModel; public function __construct() { $this->model = new CommonModel(); + $this->userModel = new UserModel(); } public function getVrfcCode() @@ -24,4 +27,95 @@ class Common extends BaseController return $this->response->setJSON($data); } + + + // 비밀번호 변경 + public function changeUserPass() + { + $usr_id = session('usr_id'); + + try { + + $usr_pass = $this->request->getPost('usr_pass'); + $new_pass = $this->request->getPost('new_pass'); + $new_pass2 = $this->request->getPost('new_pass2'); + + if (empty($usr_pass)) { + return $this->response->setJSON([ + 'code' => '9', + 'msg' => '기존 비밀번호 누락', + ]); + } + + if (empty($new_pass)) { + return $this->response->setJSON([ + 'code' => '9', + 'msg' => '비밀번호 누락', + ]); + } else { + if (strlen($new_pass) < 8) { + return $this->response->setJSON([ + 'code' => '9', + 'msg' => '비밀번호 최소 길이는 8자 입니다.', + ]); + } + } + + if (empty($new_pass2)) { + return $this->response->setJSON([ + 'code' => '9', + 'msg' => '비밀번호 확인 누락', + ]); + } else { + if ($new_pass !== $new_pass2) { + return $this->response->setJSON([ + 'code' => '9', + 'msg' => '신규 비밀번호 불일치', + ]); + } + } + + // 문자조합 유효성 검사 + if (!checkPasswordTypes($new_pass, 2)) { + return $this->response->setJSON([ + 'code' => '9', + 'msg' => '비밀번호는 영문 대/소문자, 숫자, 특수문자 중 최소 2종류 이상을 조합해야 합니다.', + ]); + } + + if ($usr_pass === $new_pass) { + return $this->response->setJSON([ + 'code' => '9', + 'msg' => '기존 비밀번호와 다르게 설정하세요.', + ]); + } + + // 기존 비밀번호 일치 확인 + $usrExist = $this->userModel->chkUserExist($usr_id, $usr_pass); + if ($usrExist === 0) { + return $this->response->setJSON([ + 'code' => '9', + 'msg' => '기존 비밀번호 불일치', + ]); + } else { + // UPDATE users + $this->userModel->changeUsrPass($usr_id, $usr_pass, $new_pass); + + + return $this->response->setJSON([ + 'code' => '0', + 'msg' => 'success' + ]); + + } + + + } catch (\Exception $e) { + // log_message('PASSWORD_CHG_ERROR', 'usr_id : ' . $usr_id . ', msg : ' . $e->getMessage()); + return $this->response->setJSON([ + 'code' => '9', + 'msg' => $e->getMessage(), + ]); + } + } } \ No newline at end of file diff --git a/app/Controllers/Home/Home.php b/app/Controllers/Home/Home.php index 971238b..895e6d8 100644 --- a/app/Controllers/Home/Home.php +++ b/app/Controllers/Home/Home.php @@ -31,12 +31,11 @@ class Home extends BaseController $notice = $this->homeModel->getNoticeList(); $statistics = $this->homeModel->getHomeStatistics($this->sdate, $this->edate); + $this->data['menus'] = $this->data; + $this->data['notice'] = $notice; + $this->data['statistics'] = $statistics; - return view('pages/home/dashboard', [ - 'menus' => $this->data, - 'notice' => $notice, - 'statistics' => $statistics, - ]); + return view('pages/home/dashboard', $this->data); } // 실적조회 diff --git a/app/Controllers/Manage/Areas.php b/app/Controllers/Manage/Areas.php index 5576a92..1494449 100644 --- a/app/Controllers/Manage/Areas.php +++ b/app/Controllers/Manage/Areas.php @@ -33,12 +33,12 @@ class Areas extends BaseController $team = $this->areaModel->getTeamList(); $user = $this->areaModel->getUserList(); - return view("pages/manage/areas/lists", [ - 'sido' => $sido, - 'bonbu' => $bonbu, - 'team' => $team, - 'user' => $user, - ]); + $this->data['sido'] = $sido; + $this->data['bonbu'] = $bonbu; + $this->data['team'] = $team; + $this->data['user'] = $user; + + return view("pages/manage/areas/lists", $this->data); } diff --git a/app/Controllers/Manage/Dept.php b/app/Controllers/Manage/Dept.php index 15e3bee..8141ab2 100644 --- a/app/Controllers/Manage/Dept.php +++ b/app/Controllers/Manage/Dept.php @@ -17,13 +17,13 @@ class Dept extends BaseController public function dept(): string { - return view("pages/manage/dept/lists"); + return view("pages/manage/dept/lists", $this->data); } // 총괄팀장 페이지 public function getchkuser(): string { - return view("pages/manage/dept/users"); + return view("pages/manage/dept/users", $this->data); } public function getDeptList() diff --git a/app/Controllers/Manage/LoginLog.php b/app/Controllers/Manage/LoginLog.php index 280d5f7..ceb5398 100644 --- a/app/Controllers/Manage/LoginLog.php +++ b/app/Controllers/Manage/LoginLog.php @@ -16,7 +16,7 @@ class LoginLog extends BaseController public function lists() { - return view("pages/manage/log/lists"); + return view("pages/manage/log/lists", $this->data); } public function getLogList() diff --git a/app/Controllers/Manage/Menu.php b/app/Controllers/Manage/Menu.php index 6c0cd39..64c8fb6 100644 --- a/app/Controllers/Manage/Menu.php +++ b/app/Controllers/Manage/Menu.php @@ -15,7 +15,7 @@ class Menu extends BaseController public function lists(): string { - return view("pages/manage/menu/lists"); + return view("pages/manage/menu/lists", $this->data); } diff --git a/app/Controllers/Manage/Permit.php b/app/Controllers/Manage/Permit.php index 7baf21a..93ec497 100644 --- a/app/Controllers/Manage/Permit.php +++ b/app/Controllers/Manage/Permit.php @@ -18,9 +18,9 @@ class Permit extends BaseController { $usrLevel = $this->permitModel->getUsrLevel(); - return view("pages/manage/permit/lists", [ - 'usrLevel' => $usrLevel, - ]); + $this->data['usrLevel'] = $usrLevel; + + return view("pages/manage/permit/lists", $this->data); } diff --git a/app/Controllers/Manage/Phone.php b/app/Controllers/Manage/Phone.php index 83306f4..e7fb502 100644 --- a/app/Controllers/Manage/Phone.php +++ b/app/Controllers/Manage/Phone.php @@ -19,7 +19,9 @@ class Phone extends BaseController { $codes = $this->phoneModel->getCodes(); - return view("pages/manage/phone/lists", ['code' => $codes]); + $this->data['code'] = $codes; + + return view("pages/manage/phone/lists", $this->data); } // 전화확인 목록조회 diff --git a/app/Controllers/Manage/Scomplex.php b/app/Controllers/Manage/Scomplex.php index 608a3ec..bcb16c6 100644 --- a/app/Controllers/Manage/Scomplex.php +++ b/app/Controllers/Manage/Scomplex.php @@ -17,7 +17,9 @@ class Scomplex extends BaseController { $codes = $this->model->getCodeList(); - return view("pages/manage/scomplex/lists", ['code' => $codes,]); + $this->data['code'] = $codes; + + return view("pages/manage/scomplex/lists", $this->data); } diff --git a/app/Controllers/Manage/Sms.php b/app/Controllers/Manage/Sms.php index 66bdcd2..6bb08d4 100644 --- a/app/Controllers/Manage/Sms.php +++ b/app/Controllers/Manage/Sms.php @@ -14,7 +14,7 @@ class Sms extends BaseController public function lists(): string { - return view("pages/manage/sms/lists"); + return view("pages/manage/sms/lists", $this->data); } @@ -62,7 +62,7 @@ class Sms extends BaseController // sms 발송 - 화면 public function smsSendView(): string { - return view("pages/manage/sms/smsSendView"); + return view("pages/manage/sms/smsSendView", $this->data); } diff --git a/app/Controllers/Manage/User.php b/app/Controllers/Manage/User.php index cae6870..4216ae9 100644 --- a/app/Controllers/Manage/User.php +++ b/app/Controllers/Manage/User.php @@ -21,12 +21,12 @@ class User extends BaseController $teamList = $this->userModel->getTeamList(); $deptCode = $this->userModel->getDeptCode(); - return view("pages/manage/user/lists", [ - 'userLevel' => $userLevel, - 'bonbuList' => $bonbuList, - 'teamList' => $teamList, - 'deptCode' => $deptCode, - ]); + $this->data['userLevel'] = $userLevel; + $this->data['bonbuList'] = $bonbuList; + $this->data['teamList'] = $teamList; + $this->data['deptCode'] = $deptCode; + + return view("pages/manage/user/lists", $this->data); } diff --git a/app/Controllers/Results/Assign.php b/app/Controllers/Results/Assign.php index 73ddda4..00dc81c 100644 --- a/app/Controllers/Results/Assign.php +++ b/app/Controllers/Results/Assign.php @@ -19,12 +19,12 @@ class Assign extends BaseController $team = $this->assignModel->getTeamList(); $sido = $this->assignModel->getAreaList(); + $this->data['bonbu'] = $bonbu; + $this->data['team'] = $team; + $this->data['sido'] = $sido; - return view("pages/results/assign/stats_a01", [ - 'bonbu' => $bonbu, - 'team' => $team, - 'sido' => $sido, - ]); + + return view("pages/results/assign/stats_a01", $this->data); } public function getUserList() diff --git a/app/Controllers/Results/Dept.php b/app/Controllers/Results/Dept.php index d643b98..5e0330f 100644 --- a/app/Controllers/Results/Dept.php +++ b/app/Controllers/Results/Dept.php @@ -65,16 +65,16 @@ class Dept extends BaseController $res = $this->deptModel->st_d01($data); - return view("pages/results/dept/stats_d01", [ - 'pBonbu' => $this->bonbu, - 'pDeptSq' => $this->dept_sq, - 'schDateGb' => $this->schDateGb, - 'sdate' => $this->sdate, - 'edate' => $this->edate, - 'bonbu' => $bonbu, - 'team' => $team, - 'st_list' => $res, - ]); + $this->data['pBonbu'] = $this->bonbu; + $this->data['pDeptSq'] = $this->dept_sq; + $this->data['schDateGb'] = $this->schDateGb; + $this->data['sdate'] = $this->sdate; + $this->data['edate'] = $this->edate; + $this->data['bonbu'] = $bonbu; + $this->data['team'] = $team; + $this->data['st_list'] = $res; + + return view("pages/results/dept/stats_d01", $this->data); } // 엑셀 다운로드 diff --git a/app/Controllers/Results/M409.php b/app/Controllers/Results/M409.php index 9826844..d55d251 100644 --- a/app/Controllers/Results/M409.php +++ b/app/Controllers/Results/M409.php @@ -21,10 +21,10 @@ class M409 extends BaseController $CODE_VRFCREQ_WAY = convertArrayToHashTable($codes['VRFCREQ_WAY'], 'cd', 'cd_nm', []); $CODE_CP_ID = convertArrayToHashTable($codes['CP_ID'], 'cd', 'cd_nm', []); - return view("pages/results/m409/stats", [ - 'code_vrfcreq_way' => $CODE_VRFCREQ_WAY, - 'code_cp_id' => $CODE_CP_ID, - ]); + $this->data['code_vrfcreq_way'] = $CODE_VRFCREQ_WAY; + $this->data['code_cp_id'] = $CODE_CP_ID; + + return view("pages/results/m409/stats", $this->data); } public function getResultList() diff --git a/app/Controllers/Results/M410.php b/app/Controllers/Results/M410.php index 6ae28ae..bc57dfb 100644 --- a/app/Controllers/Results/M410.php +++ b/app/Controllers/Results/M410.php @@ -21,11 +21,11 @@ class M410 extends BaseController $CODE_CP_ID = convertArrayToHashTable($codes['CP_ID'], 'cd', 'cd_nm', []); $department = $this->model->getDepart(); - return view("pages/results/m410/stats", [ - 'code_vrfcreq_way' => $CODE_VRFCREQ_WAY, - 'code_cp_id' => $CODE_CP_ID, - 'department' => $department, - ]); + $this->data['code_vrfcreq_way'] = $CODE_VRFCREQ_WAY; + $this->data['code_cp_id'] = $CODE_CP_ID; + $this->data['department'] = $department; + + return view("pages/results/m410/stats", $this->data); } public function getResultList() diff --git a/app/Controllers/Results/M411.php b/app/Controllers/Results/M411.php index db27276..d7493ec 100644 --- a/app/Controllers/Results/M411.php +++ b/app/Controllers/Results/M411.php @@ -15,8 +15,7 @@ class M411 extends BaseController public function stats(): string { - return view("pages/results/m411/stats", [ - ]); + return view("pages/results/m411/stats", $this->data); } public function getResultList() diff --git a/app/Controllers/Results/M412.php b/app/Controllers/Results/M412.php index c79af1f..59a9d4a 100644 --- a/app/Controllers/Results/M412.php +++ b/app/Controllers/Results/M412.php @@ -28,14 +28,15 @@ class M412 extends BaseController $sendJ = $this->model->get_send_yn('J'); $sendO = $this->model->get_send_yn('O'); - return view("pages/results/m412/stats", [ - 'sendH' => $sendH, - 'sendD' => $sendD, - 'sendT' => $sendT, - 'sendN' => $sendN, - 'sendJ' => $sendJ, - 'sendO' => $sendO, - ]); + $this->data['sendH'] = $sendH; + $this->data['sendD'] = $sendD; + $this->data['sendT'] = $sendT; + $this->data['sendN'] = $sendN; + $this->data['sendJ'] = $sendJ; + $this->data['sendO'] = $sendO; + + + return view("pages/results/m412/stats", $this->data); } public function getResultList() diff --git a/app/Controllers/Results/M415.php b/app/Controllers/Results/M415.php index fa151d3..8adfcf4 100644 --- a/app/Controllers/Results/M415.php +++ b/app/Controllers/Results/M415.php @@ -14,8 +14,7 @@ class M415 extends BaseController public function stats(): string { - return view("pages/results/m415/stats", [ - ]); + return view("pages/results/m415/stats", $this->data); } diff --git a/app/Controllers/Results/M416.php b/app/Controllers/Results/M416.php index 1ba9ce3..a1a630e 100644 --- a/app/Controllers/Results/M416.php +++ b/app/Controllers/Results/M416.php @@ -19,11 +19,11 @@ class M416 extends BaseController $team = $this->model->getTeamList(); $sido = $this->model->getAreaList(); - return view("pages/results/m416/stats", [ - 'bonbu' => $bonbu, - 'team' => $team, - 'sido' => $sido, - ]); + $this->data['bonbu'] = $bonbu; + $this->data['team'] = $team; + $this->data['sido'] = $sido; + + return view("pages/results/m416/stats", $this->data); } diff --git a/app/Controllers/Results/M417.php b/app/Controllers/Results/M417.php index 1c79567..d80c8e6 100644 --- a/app/Controllers/Results/M417.php +++ b/app/Controllers/Results/M417.php @@ -18,9 +18,9 @@ class M417 extends BaseController { $department = $this->model->getDepart(); - return view("pages/results/m417/stats", [ - 'department' => $department, - ]); + $this->data['department'] = $department; + + return view("pages/results/m417/stats", $this->data); } diff --git a/app/Controllers/Results/Person.php b/app/Controllers/Results/Person.php index bc0d4b1..9bed37c 100644 --- a/app/Controllers/Results/Person.php +++ b/app/Controllers/Results/Person.php @@ -22,11 +22,11 @@ class Person extends BaseController $team = $this->personModel->getTeamList(); $sido = $this->personModel->getAreaList(); - return view("pages/results/person/stats_p01", [ - 'bonbu' => $bonbu, - 'team' => $team, - 'sido' => $sido, - ]); + $this->data['bonbu'] = $bonbu; + $this->data['team'] = $team; + $this->data['sido'] = $sido; + + return view("pages/results/person/stats_p01", $this->data); } public function getUserList() diff --git a/app/Controllers/Results/Summary.php b/app/Controllers/Results/Summary.php index c25708b..fb15d1a 100644 --- a/app/Controllers/Results/Summary.php +++ b/app/Controllers/Results/Summary.php @@ -87,13 +87,13 @@ class Summary extends BaseController } } - return view("pages/results/summary/stats_s01", [ - 'schDateGb' => $this->schDateGb, - 'sdate' => $this->sdate, - 'edate' => $this->edate, - 'st_list' => $res, - 'st_agent' => $res2, - 'totalAmount' => $totalAmount, - ]); + $this->data['schDateGb'] = $this->schDateGb; + $this->data['sdate'] = $this->sdate; + $this->data['edate'] = $this->edate; + $this->data['st_list'] = $res; + $this->data['st_agent'] = $res2; + $this->data['totalAmount'] = $totalAmount; + + return view("pages/results/summary/stats_s01", $this->data); } } \ No newline at end of file diff --git a/app/Controllers/V2/M701.php b/app/Controllers/V2/M701.php index e644b96..888f4e6 100644 --- a/app/Controllers/V2/M701.php +++ b/app/Controllers/V2/M701.php @@ -24,13 +24,13 @@ class M701 extends BaseController $team = $this->model->getTeamList(); $user = $this->model->getUserList(); - return view("pages/v2/m701/lists", [ - "sido" => $sido, - "bonbu" => $bonbu, - "team" => $team, - "user" => $user, - "codes" => $codes, - ]); + $this->data['sido'] = $sido; + $this->data['bonbu'] = $bonbu; + $this->data['team'] = $team; + $this->data['user'] = $user; + $this->data['codes'] = $codes; + + return view("pages/v2/m701/lists", $this->data); } public function getResultList() @@ -114,6 +114,31 @@ class M701 extends BaseController $e->getPrevious()->getTraceAsString(); } } + + + + // 상세화면 + public function detail($id = null) + { + $id = (int) $id; + + if ($id <= 0) { + throw \CodeIgniter\Exceptions\PageNotFoundException::forPageNotFound(); + } + + $codes = $this->codeModel->getCodeLists(['VRFCREQ_WAY', 'CONFIRM_RESULT_D11', 'CONFIRM_RESULT_T11', 'CONSULTANT_COMMENT', 'STEP_VERIFICATION', 'TEL_FAIL_CAUSE']); // 코드조회 + + $data = $this->model->getDetail($id); + + $history = $this->model->getHistory($id); + + $this->data['codes'] = $codes; + $this->data['data'] = $data; + $this->data['history'] = $history; + + + return view("pages/v2/m701/detail", $this->data); + } } diff --git a/app/Helpers/function_helper.php b/app/Helpers/function_helper.php index 724a8d7..dec7efa 100644 --- a/app/Helpers/function_helper.php +++ b/app/Helpers/function_helper.php @@ -237,3 +237,33 @@ function han($s) } // function to_han ($str) { return preg_replace('/(\\\u[a-f0-9]+)+/e','han("$0")',$str); } +/** + * 비밀번호 문자 조합 검사 + * - 영문 대문자 / 소문자 / 숫자 / 특수문자 중 최소 $minTypes 종류 이상 + */ +function checkPasswordTypes(string $password, int $minTypes = 2): bool +{ + $types = 0; + + // 대문자 + if (preg_match('/[A-Z]/', $password)) { + $types++; + } + + // 소문자 + if (preg_match('/[a-z]/', $password)) { + $types++; + } + + // 숫자 + if (preg_match('/[0-9]/', $password)) { + $types++; + } + + // 특수문자 (공백 제외) + if (preg_match('/[^A-Za-z0-9]/', $password)) { + $types++; + } + + return $types >= $minTypes; +} diff --git a/app/Models/manage/UserModel.php b/app/Models/manage/UserModel.php index f21520e..99b11fe 100644 --- a/app/Models/manage/UserModel.php +++ b/app/Models/manage/UserModel.php @@ -461,5 +461,59 @@ class UserModel extends Model return $query->getResultArray(); } + + // 최근 비밀번호 변경일 확인 + public function chkChgPwDiff($usr_id) + { + $sql = "SELECT DATEDIFF( NOW() , ifnull( last_usr_pw_tm , '2024-01-01 00:00:00') ) as diff FROM users WHERE usr_id = ?"; + + $query = $this->db->query($sql, [$usr_id]); + + return $query->getRow()->diff; + } + + // 기존 비밀번호 일치 확인 + public function chkUserExist($usr_id, $usr_pass) + { + $sql = "SELECT COUNT(*) AS cnt FROM users WHERE usr_id = ? AND usr_pw = SHA2(?, 256)"; + + $query = $this->db->query($sql, [$usr_id, $usr_pass]); + + return $query->getRow()->cnt; + } + + // 비밀번호 변경 + public function changeUsrPass($usr_id, $usr_pass, $new_pass) + { + $sql = "UPDATE users SET usr_pw = SHA2(?, 256), last_usr_pw_tm = NOW() WHERE usr_id = ? AND usr_pw = SHA2(?, 256) "; + + if ($this->db->query($sql, [$new_pass, $usr_id, $usr_pass]) === false) { + return [ + 'success' => false, + 'msg' => '비밀번호 변경 실패', + ]; + } + + $this->addUserChgHistory(session('usr_sq'), session('usr_sq'), "개인 비밀번호 변경", $new_pass); + + // 성공 + return [ + 'success' => true, + ]; + + } + + // 변경이력저장 + public function addUserChgHistory($usr_sq, $update_user, $memo, $pwd = null) + { + $sql = "INSERT INTO user_chg_history(usr_sq,update_user,memo,update_dttm )" . + " VALUES(?,?,?,now() )"; + $data = [ + $usr_sq, + $update_user, + $memo + ]; + $this->db->query($sql, $data); + } } diff --git a/app/Models/v2/M701Model.php b/app/Models/v2/M701Model.php index 87731a1..fce486e 100644 --- a/app/Models/v2/M701Model.php +++ b/app/Models/v2/M701Model.php @@ -681,4 +681,175 @@ class M701Model extends Model return $query->getResultArray(); } + + + // 상세화면 + public function getDetail($id) + { + $sql = "SELECT + a.vr_sq, + a.dong_ho_chk, + a.hscplqry_lv, + b.tel_fail_cause, + a.reg_charger, + i2.usr_nm as reg_charger_nm, + a.atcl_no, + b.try_cnt, + a.cpid, + a.cp_atcl_id, + a.rlet_type_cd, + a.address1, + a.sise, + a.rdate, + a.seller_tel_no, + a.seller_nm, + a.realtor_nm, + a.realtor_tel_no, + a.charger, + a.ownerNm, + a.ownerTelNo, + b.owner_verifiable, + b.insert_tm, + b.stat_cd, + c.bild_nm, + b.vrfc_type as vrfc_type_cd, + b.memo, + c.rm_no, + c.floor, + c.floor2, + c.address_code, + c.address2, + c1.address2a, + c1.address2b, + c1.vrfcMthdTpCd, + c1.registerBookUniqueNo, + c1.ownerTypeCode, + c.address3, + c.address4, + c.trade_type as trade_type_cd, + c.deal_amt, + c.wrrnt_amt, + c.lease_amt, + c.isale_amt, + c.prem_amt, + c.sply_spc, + c.excls_spc, + c.tot_spc, + c.grnd_spc, + c.bldg_spc, + c.hscp_no, + c.ptp_no, + d.insert_tm as update_res_tm, + e.insert_tm as result_tm, + f.region_nm, + g.cd_nm as pre_stat, + g.cd as pre_stat_cd, + h.cd_nm as vrfc_type, + i.usr_nm, + j.cd_nm as trade_type, + c.hscp_nm, + c.ptp_nm, + l.success, + k.cd_nm as atcl_nm, + m.code as result_d11, + m.comment, + n.code as fax_conf_yn_2, + o.code as fax_conf_yn_3, + p.code as fax_conf_yn_4, + n.comment as fax_conf_yn_info_2, + o.comment as fax_conf_yn_info_3, + p.comment as fax_conf_yn_info_4, + v.success AS tel_suc, + r.code AS tel_agree, + s.code AS tel_conf_yn_2, + t.code AS tel_conf_yn_3, + u.code AS tel_conf_yn_4, + z.code AS tel_conf_yn_5, + s.comment AS tel_conf_yn_info_2, + t.comment AS tel_conf_yn_info_3, + u.comment AS tel_conf_yn_info_4, + w.success AS reg_conf_yn_1, + x.code AS reg_conf_yn_2, + y.code AS reg_conf_yn_3, + x.comment AS reg_conf_yn_info_2, + y.comment AS reg_conf_yn_info_3, + b.rgbk_confirm, + a.confirm_doc_img_url, + a.cert_register, + a.cert_register_save_yn, + a.confirm_doc_img_url_save_yn, + a.reference_file_url, + a.reference_file_url_save_yn, + a.reference_file_url_yn, + IF(b.insert_tm <= DATE_ADD(CURDATE(), INTERVAL -2 MONTH),'Y','N') after60, + c1.vir_addr_yn, + c1.noRgbkVrfcReqYn, + c1.areaByBdbkVrfcReqYn, + sm.sm_apporval_date , + sm.sm_end_date, + sm.sm_seq, + registerBookUniqueNumber + FROM + v2_article_info a + JOIN v2_vrfc_req b ON a.vr_sq = b.vr_sq + JOIN v2_modify_info c ON a.vr_sq = c.vr_sq + LEFT JOIN v2_article_info_etc c1 ON c1.vr_sq = a.vr_sq + LEFT JOIN region_codes f ON a.address_code = f.region_cd + LEFT JOIN v2_chg_stat d ON a.vr_sq = d.vr_sq AND d.stat_cd = '35' + LEFT JOIN v2_chg_stat e ON a.vr_sq = e.vr_sq AND d.stat_cd = '60' + LEFT JOIN codes g ON b.stat_cd = g.cd AND g.category = 'STEP_VERIFICATION' + LEFT JOIN codes h ON b.stat_cd = h.cd AND g.category = 'VRFCREQ_WAY' + LEFT JOIN codes j ON b.stat_cd = h.cd AND j.category = 'TRADE_TYPE' + LEFT JOIN codes k ON b.stat_cd = k.cd AND j.category = 'ARTICLE_TYPE' + LEFT JOIN v2_confirm l ON a.vr_sq = l.vr_sq AND l.vrfc_type = 'D' + LEFT JOIN v2_check_list m ON a.vr_sq = m.vr_sq AND m.type = 'D11' + LEFT JOIN v2_check_list n ON a.vr_sq = n.vr_sq AND m.type = 'D12' + LEFT JOIN v2_check_list o ON a.vr_sq = o.vr_sq AND m.type = 'D13' + LEFT JOIN v2_check_list p ON a.vr_sq = p.vr_sq AND m.type = 'D14' + LEFT JOIN v2_confirm v ON a.vr_sq = v.vr_sq AND v.vrfc_type = 'T' + LEFT JOIN v2_check_list r ON a.vr_sq = r.vr_sq AND r.type = 'T11' + LEFT JOIN v2_check_list s ON a.vr_sq = s.vr_sq AND r.type = 'T12' + LEFT JOIN v2_check_list t ON a.vr_sq = t.vr_sq AND r.type = 'T13' + LEFT JOIN v2_check_list u ON a.vr_sq = u.vr_sq AND r.type = 'T14' + LEFT JOIN v2_check_list z ON a.vr_sq = z.vr_sq AND r.type = 'T15' + LEFT JOIN v2_confirm w ON a.vr_sq = w.vr_sq AND w.vrfc_type = 'R' + LEFT JOIN v2_check_list x ON a.vr_sq = x.vr_sq AND x.type = '21' + LEFT JOIN v2_check_list y ON a.vr_sq = y.vr_sq AND x.type = '22' + LEFT JOIN users i ON a.charger = i.usr_id + LEFT JOIN users i2 ON a.reg_charger = i2.usr_id + LEFT JOIN scomplex_manage sm ON a.hscp_no = sm.sm_code + WHERE a.vr_sq = ? "; + + + $query = $this->db->query($sql, [$id]); + + return $query->getRowArray(); + } + + + // 변경이력 조회 + public function getHistory($id) + { + $sql = "SELECT + a.seq, + a.vr_sq, + a.stat_cd, + a.chg_type, + a.insert_id, + a.insert_tm, + a.memo, + b.cd_nm as stat_cd_nm, + c.cd_nm as chg_type + FROM + v2_chg_history a + LEFT JOIN codes b ON a.stat_cd = b.cd AND b.category = 'STEP_VERIFICATION' + LEFT JOIN codes c ON a.chg_type = c.cd AND b.category = 'CHANGED_TYPE' + WHERE + a.vr_sq = ? + ORDER BY a.seq DESC "; + + $query = $this->db->query($sql, [$id]); + + return $query->getResultArray(); + } } \ No newline at end of file diff --git a/app/Views/layouts/main.php b/app/Views/layouts/main.php index bbc6986..89a2360 100644 --- a/app/Views/layouts/main.php +++ b/app/Views/layouts/main.php @@ -28,6 +28,10 @@ renderSection('modals') ?> + + include('layouts/widget/pwModal') ?> + + \ No newline at end of file diff --git a/app/Views/pages/v2/m701/detail.php b/app/Views/pages/v2/m701/detail.php new file mode 100644 index 0000000..04a83bc --- /dev/null +++ b/app/Views/pages/v2/m701/detail.php @@ -0,0 +1,599 @@ +extend('layouts/main') ?> + +section('content') ?> + + +

확인매물 상세 내용

+ +
+
+
+
+

+

+ + + + + + + + + + + + + +
매물ID : + CP ID : 현재 상태 + :
+

+ +
+
+
공인 중개사 정보
+ + + + + + + + + + + + + + +
중개사명대표전화
+
+
+ +
+
+
단지 정보
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
등록일전화/서류 완료일시 + +
등기부등본 확인완료의뢰인(매도자) + + *** + + + +
매물구분거래구분 +
+
+ disabled> + +
+ +
+ disabled> + +
+ +
+ disabled> + +
+ +
+ disabled> + +
+
+
지역구분리 주소 + +
상세주소 + + + + + + + + + +
기타주소 + +
단지명 + + + + ※ 특이단지 + + 가격 +
+
+ + 만원 +
+ +
+ + +
+
+
평형 + + + 층 / 총층 +
+ + / + +
+
가주소 여부N검증참고란
소유자 구분미등기 검증요청N
건축물대장 면적 검증요청N등기부 고유번호
+
+
+ +
+
+ +
+
+
단지 정보
+ + + + + + + + + + + + + +
단지명소재주소상세주소사용승인일단지 총 동수
+
+
+ +
+
+
상태변경
+ + + + + +
+
+ +
+
+
서류확인 정보
+ + + + + + + + + + + + + + + + +
+
+ + Image + +
+ +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
확인담당자관리자
확인여부 + +
홍보확인서
미확인여부상세
+ + + + + + + + + + + + + + + + + + + + + + + +
소재지 거래유형
가격 등기부상 소유자명
소유자와의 관계 의뢰인
서명 중개업소요청
증빙서류 기타
+
확인 내용 + +
매물주소 + + +
가격 거래구분 + + +
의뢰인정보 + + +
메모 + + +
+
+
+ +
+ + + + section('modals') ?> + + + + + + endSection() ?> + + + + + + + endSection() ?> \ No newline at end of file diff --git a/app/Views/pages/v2/m701/lists.php b/app/Views/pages/v2/m701/lists.php index c6aff66..ed08828 100644 --- a/app/Views/pages/v2/m701/lists.php +++ b/app/Views/pages/v2/m701/lists.php @@ -556,11 +556,8 @@ const rowData = table.row(this).data(); if (!rowData) return; - return; - - // const rcpt_no = rowData.rcpt_no; - // const hscp_no = rowData.hscp_no; - // location.href = "/" + rcpt_no + "/" + hscp_no; + const vr_sq = rowData.vr_sq; + location.href = "/" + vr_sq; }); $('#btnSearch').on('click', function () {