|  |  |
|
사용자 클린업
사용자들은 크리키에 와서 자신의 계정을 만들고 애플리케이션에 로그인, 로그아웃을 할 수 있다. 이제 기본적인 사용자 기능을 가지고 있으니 필요 없는 동작을 지우고 편집 동작을 잠궈 사용자의 컨트롤러를 클린업하고, 로그인/로그아웃/등록 기능에 접근할 수 있는 기본 레이아웃을 변경해야만 한다.
사용자 컨트롤러 클린업
여기서 사용자 컨트롤러 클린업을 위해 몇 가지 해야 할 일이 있다. 삭제 동작은 지금은 별 필요 없으니 일단 삭제한다. 또한 사용자만이 자신의 정보를 편집할 수 있으므로 편집 동작은 변경되어야 한다. 이를 다 하면 새로운 편집 컨트롤러는 Listing 7처럼 보일 것이다.
Listing 7. 새로운 편집 컨트롤러
function edit($id = null) {
if ($this->Session->check('User')) {
$user = $this->Session->read('User');
if(empty($this->data)) {
if(!$id) {
$this->Session->setFlash('Invalid id for User');
$this->redirect('/user/index');
}
$this->data = $this->User->read(null, $id);
} else {
if ($id == $user['id']) {
$this->cleanUpFields();
if($this->User->save($this->data)) {
$this->Session->setFlash('The User has been saved');
$this->redirect('/user/index');
} else {
$this->Session->setFlash('Please correct errors below.');
}
}
}
}
}
|
편집 동작은 사용자가 로그인된 상태인지 또는 편집되고 있는 사용자 ID가 편집을 하고 있는 사용자의 ID와 같은지 확인하지 않는다.
기본 레이아웃 변경
우리는 기본 레이아웃에 있는 $session 변수에 접근할 수 있고 로그인된 사용자에게만 로그아웃 링크를 보여줄 수 있다. 반면 로그아웃된 사용자들에게는 로그인/등록 링크를 보여준다.
app/views/layouts/default.thtml을 편집하고 다음 코드를 링크 메뉴에 추가하자.
Listing 8. 기본 레이아웃 변경하기
<?php if ($session->check('User')) {
echo $html->link('logout', '/users/logout');
} else {
echo $html->link('login', '/users/login');
echo ' | ';
echo $html->link('register', '/users/register');
} ?>
|
일단 여기까지 하자. 다음 절에서는 엔트리 컨트롤러에 대해 다루겠다.
|  |
|