(AdonisJs 4.0 Tutorial) 관리자 비밀번호 변경하기
- 뷰 디렉토리에
xyz/resources/views/mgmt/admin/chg_passwd_form.edge
파일을 생성한다.<div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> <h4 class="modal-title">관리자 비밀번호 변경</h4> </div> <div class="modal-body"> <form name="chg_passwd_form" action="/mgmt/admin/chg_passwd" method="post"> {{ csrfField() }} <div class="form-group"> <label>아이디</label> <input type="text" name="userid" class="form-control" readonly required value="{{ admin.userid }}"/> <input type="hidden" name="id" value="{{ admin.id }}" /> </div> <div class="form-group"> <label>비밀번호 <small>(필수)</small></label> <input type="password" name="passwd1" class="form-control" required /> </div> <div class="form-group"> <label>비밀번호 확인 <small>(필수)</small></label> <input type="password" name="passwd2" class="form-control" required /> </div> <div class="form-group" style="text-align: right"> <input class="btn btn-primary" type="submit" value="관리자 비밀번호 변경" /> </div> </form> </div>
- 컨트롤러(
xyz/Controllers/Http/Mgmt/AdminController.js
)에 다음을 추가한다.... // 관리자 비밀번호변경 폼 // /mgnt/admin/chg_passwd_form/:id async chg_passwd_form ({params, view}) { const admin = await Admin.find(params.id) return view.render('mgmt/admin/chg_passwd_form', { admin: admin.toJSON() }) } ...
- 라우터(
xyz/start/routes.js
)에 다음을 추가한다.Route.get('/admin/chg_passwd_form/:id', 'Mgmt/AdminController.chg_passwd_form').as('mgmt_admin_chg_passwd_form')
- 이제,
비밀번호변경
버튼을 클릭하면 비밀번호변경을 위한 모달 다이얼로그박스가 나타날 것이다.
- 실제로 비밀번호를 변경하는 작업을 해보자. 우선 모델(
xyz/app/Models/Admin.js
)에 다음을 추가한다.static async change_password (id, passwd) { let admin = await this.find(id) admin.password = passwd await admin.save() }
- 그리고, 컨트롤러(
xyz/Controllers/Http/Mgmt/AdminController.js
)에 다음을 추가한다.// 관리자 비밀번호변경 // /mgmt/admin/chg_passwd async chg_passwd ({request, response}) { let id = request.input('id') let passwd1 = request.input('passwd1') let passwd2 = request.input('passwd2') if (passwd1 != passwd2) { return response.route('mgmt_admin') } await Admin.change_password(id, passwd1) return response.route('mgmt_admin') }
- 라우터(
xyz/start/routes.js
)에는 다음을 추가한다.Route.post('/admin/chg_passwd', 'Mgmt/AdminController.chg_passwd').as('mgmt_admin_chg_passwd')
- 비밀번호를 변경해보고, DB의 내용이 잘 반영되었는지 확인해보자.
$ cd xyz/database $ sqlite3 development.sqlite sqlite> select * from admins; 1|testid1|passwd1|nick1 2|testid2|passwd2|nick2 3|testid3|passwd3|nick3 4|testid4|passwd4|nick4 5|testid5|passwd5|nick5 6|admin|newpassword|Admin sqlite>
댓글
댓글 쓰기