|  |  |
|
로그인/로그아웃
이제 막 사용자 등록을 끝냈다. 크리키는 비 스크립트로 쓰여진 코드의 첫 부분을 갖게 되었다. 하지만 이건 워밍업일 뿐이다. 사용자가 등록을 할 수 있게 된 건 잘 된 일이나 사용자 자신의 계정을 사용할 수 있어야 한다. 이는 로그인과 로그아웃으로 시작된다. 이 절에서는 로그인 뷰와 함께 로그인과 로그아웃 동작을 만들 것이다.
로그인 뷰
로그인 뷰는 복잡하지 않다. 이메일 주소와 비밀번호만 있으면 된다. 요구사항이 단순하므로 로그인 뷰는 Listing 4처럼 보인다.
Listing 4. 로그인 뷰
<?php echo $html->formTag('/users/login') ?>
<p>Please log in.</p>
<label>Email Address:</label>
<?php echo $html->inputTag('User/email') ?>
<label>Password:</label>
<?php echo $html->passwordTag('User/password') ?>
<?php echo $html->submitTag('login') ?>
<?php echo $html->tagErrorMsg('User/email', $login_error) ?>
</form>
|
이 양식은 매우 간단하다. 이제 이에 따르는 로그인 동작이 필요하다.
로그인 동작
로그인에서는 사용자 비밀번호를 확인하고 이것이 유효하면 사용자 데이터를 세션에 저장한다. 로그인 동작은 Listing 5처럼 보인다.
Listing 5. 로그인 동작
function login() {
$this->set('login_error', );
if ($this->data) {
$results = $this->User->findByEmail($this->data['User']['email']);
if ($results && $results['User']['password'] == md5($this->data['User']['password']))
{
$this->Session->write('User', $results['User']);
$results['User']['login'] = date("Y-m-d H:i:s");
$this->User->save($results);
$this->redirect('/');
} else {
$this->User->invalidate('email');
$this->User->invalidate('password');
$this->set('login_error', 'invalid login');
}
}
}
|
이 동작은 또한 현재 시간, 날짜와 함께 로그인 필드를 업데이트한다. 이것이 해야 하는 전부다.
로그아웃 동작
로그아웃 동작은 더 간단하다. 세션에서 사용자 정보를 지워 다른 곳으로 보내버리기만 하면 된다. 이 동작은 Listing 6처럼 보인다.
Listing 6. 로그아웃 동작
function logout() {
$this->Session->delete('User');
$this->redirect('/');
}
|
대체로 정보는 루트 디렉터리로 보낸다는 것에 주목하자. 이제 그 페이지는 기본 CakePHP 설치 화면처럼 보인다. 더 나은 크리키 시작 페이지로 만들기 위해 이 페이지를 나중에 편집할 것이다.
|  |
|