2016-11-07

Adonis Tutorial : 관리자 비밀번호 변경하기


  • 뷰 디렉토리에 xyz/resources/views/mgmt/admin/chg_passwd_form.njk 파일을 생성한다.
    <div class="modal-header">
      <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</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/Http/Controllers/Mgmt/AdminController.js)에 다음을 추가한다.
    ...
     
      // 관리자 비밀번호변경 폼
      // /mgnt/admin/chg_passwd_form/:id
      * chg_passwd_form (request, response) {
        const admin = yield Admin.find(request.param('id'))
        yield response.sendView('mgmt/admin/chg_passwd_form', { admin: admin.toJSON() })
      }
     
    ...
  • 라우터(xyz/app/Http/routes.js)에 다음을 추가한다.
      Route.get('/admin/chg_passwd_form/:id', 'Mgmt/AdminController.chg_passwd_form').as('mgmt_admin_chg_passwd_form')
  • 이제, 비밀번호변경 버튼을 클릭하면 비밀번호변경을 위한 모달 다이얼로그박스가 나타날 것이다.
  • 실제로 비밀번호를 변경하는 작업을 해보자. 우선 모델(xyz/app/Model/Admin.js)에 다음을 추가한다.
      static * change_password (id, passwd) {
        let admin = yield this.find(id)
        admin.password = passwd
        yield admin.save()
      }
  • 그리고, 컨트롤러(xyz/Http/Controllers/Mgmt/AdminController.js)에 다음을 추가한다.
      // 관리자 비밀번호변경
      // /mgmt/admin/chg_passwd
      * chg_passwd (request, response) {
        let id = request.input('id')
        let passwd1 = request.input('passwd1')
        let passwd2 = request.input('passwd2')
     
        if (passwd1 != passwd2) {
          response.route('mgmt_admin')
          return
        }
        yield Admin.change_password(id, passwd1)
        response.route('mgmt_admin')
      }
  • 라우터(xyz/app/Http/routes.js)에는 다음을 추가한다.
      Route.post('/admin/chg_passwd', 'Mgmt/AdminController.chg_passwd').as('mgmt_admin_chg_passwd')
  • 비밀번호를 변경해보고, DB의 내용이 잘 반영되었는지 확인해보자.
    $ sqlite3 xyz.db
    sqlite> select * from tb_admin;
    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>

댓글 없음:

댓글 쓰기