더북(TheBook)

포스트와 코멘트 컨트롤러에서 CurrentUser 권한 확인

포스트와 코멘트 컨트롤러에 현재 사용자(CurrentUser)가 현재 액션을 수행할 권한이 있는지 확인하는 CheckUser 메서드를 만들고, CheckUser 메서드를 인터셉터로 등록해 보자.

app/controllers/post.go 파일에 다음과 같이 CheckUser 메서드를 추가한다.

▼ app/controllers/post.go

// App을 임베디드 필드로 지정
type Post struct {
    App
}
 
func (c Post) CheckUser() revel.Result {
    // Index와 Show는 권한을 확인하지 않음.
    switch c.MethodName {
    case "Index", "Show":
        return nil
    }
     
    // CurrentUser 정보가 없으면 로그인 페이지로 이동
    if c.CurrentUser == nil {
        c.Flash.Error("Please log in first")
        return c.Redirect(App.Login)
    }
     
    // CurrentUser가 관리자가 아니면 로그인 페이지로 이동
    if c.CurrentUser.Role != "admin" {
        c.Response.Status = 401 // Unauthorized
        c.Flash.Error("You are not admin")
        return c.Redirect(App.Login)
    }
    return nil
}

CheckUser 메서드에서는 IndexShow를 제외한 모든 액션은 관리자만 수행할 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.