포스트와 코멘트 컨트롤러에서 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 메서드에서는 Index와 Show를 제외한 모든 액션은 관리자만 수행할 수 있다.