더북(TheBook)

10.7.5 권한이 있는 사용자만 해당 기능에 접근

인증 인터셉터만으로도 보안 처리는 됐다. 하지만 화면에서도 권한이 없는 사용자는 해당 버튼이나 링크를 볼 수 없어야 한다. 현재 접속한 사용자의 권한을 확인해서 권한이 있을 때만 버튼을 보여주게 해보자.

 

템플릿 함수에 사용자 권한을 확인하는 함수 등록

뷰에서 템플릿 함수 isAdmin으로 현재 사용자의 권한을 확인할 수 있게 해주는 새 템플릿 함수를 추가한다. app/init.go 파일에 다음과 같이 isAdmin 템플릿 함수를 등록해 보자.

▼ app/init.go

func init() {
    ...
     
    // 데이터 서식 지정
    revel.TemplateFuncs["formatDate"] = func(date time.Time) string {
        return date.Format("2006/01/02 03:04")
    }
     
        // 사용자의 권한 확인
    revel.TemplateFuncs["isAdmin"] = func(currentUser *models.User) bool {
        return currentUser != nil && currentUser.Role == "admin"
    }
     
    ...
}

이제 뷰에서 현재 사용자가 관리자인지 확인하는 isAdmin 함수를 템플릿 함수로 사용할 수 있게 됐다. {{if isAdmin .currentUser}} 관리자에게만 노출 {{end}}처럼 작성하여 사용하면 된다.

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