'[Grails] 게시판 만들기'에 해당되는 글 4건
- 2014.01.27 [Grails] 게시판 만들기 8 - 메세지 한글 처리
- 2014.01.23 [Grails] 게시판 만들기 7 - 사용자 정보 연결
- 2012.12.30 [Grails] 게시판 만들기 6 - 인증
- 2012.12.29 [Grails] 게시판 만들기 1
- [Grails] 게시판 만들기 8 - 메세지 한글 처리
- 日常茶飯事
- 2014. 1. 27. 01:16
- 기본 메세지 파일을 복사해서 한글 메세지 파일을 만든다.
grails-app\i18n\messages_ko.properties
...
default.paginate.prev=이전
default.paginate.next=다음
...
default.deleted.message={0}이(가) 삭제되었습니다.
...
default.home.label=Home
default.list.label={0} 목록
default.add.label=Add {0}
default.new.label=새 {0}
default.create.label=Create {0}
default.show.label={0} 보기
default.edit.label={0} 수정
...
entry.label=글
entry.title.label=제목
entry.lastUpdated.label=일시
entry.content.label=내용
entry.user.label=글쓴이
entry.comments.label=댓글
entry.tags.label=태그
comment.label=댓글
...
default.paginate.prev=이전
default.paginate.next=다음
...
default.deleted.message={0}이(가) 삭제되었습니다.
...
default.home.label=Home
default.list.label={0} 목록
default.add.label=Add {0}
default.new.label=새 {0}
default.create.label=Create {0}
default.show.label={0} 보기
default.edit.label={0} 수정
...
entry.label=글
entry.title.label=제목
entry.lastUpdated.label=일시
entry.content.label=내용
entry.user.label=글쓴이
entry.comments.label=댓글
entry.tags.label=태그
comment.label=댓글
...
- [Grails] 게시판 만들기 7 - 사용자 정보 연결
- 日常茶飯事
- 2014. 1. 23. 20:00
글을 입력할 때 세션의 사용자 정보가 들어가도록 해보자.
- Entry에 User 추가, nullable:false
- EntryController 수정
User를 test라는 사용자로 입력했는데 실제 입력된 데이터는 admin이다.
그러나 수정하는 경우에는 update()가 실행되므로 EntryController를 수정해야 한다.
- 입력화면에서 보이지 않게 하려면 display를 false로 둔다. EntryController#update()를 수정하지 않아도 된다.
grails> generate-views com.sample.blog.Entry
entry/_form.gsp에서 User 부분을 없앤다.
이 상태에서 GSP를 만들지 않고 수정 화면에서 user가 보이게 하는 방법
- Entry에 User 추가, nullable:false
- EntryController 수정
grails> generate-controller com.sample.blog.Entry
class EntryController { def scaffold = Entry def save() { def entryInstance = new Entry(params) entryInstance.user = session.user // if (!entryInstance.save(flush: true)) { render(view: "create", model: [entryInstance: entryInstance]) return } flash.message = message(code: 'default.created.message', args: [message(code: 'entry.label', default: 'Entry'), entryInstance.id]) redirect(action: "show", id: entryInstance.id) } }
그러나 수정하는 경우에는 update()가 실행되므로 EntryController를 수정해야 한다.
이 상태에서 GSP를 만들지 않고 수정 화면에서 user가 보이게 하는 방법
- [Grails] 게시판 만들기 6 - 인증
- 日常茶飯事
- 2012. 12. 30. 20:10
- 권한을 설정해서 인증 과정을 통과한 사용자만 글쓰기를 하도록 한다.
권한을 설정하는 방법은 많지만 필터를 사용한다. =-=>이 방법들 조사해서 정리하고 링크!!!
- 필터 생성
- 사용 도메인 생성
필터에서 리다이렉트 시킨다.
- Bootstrap에 User 데이터를 넣어둔다. =-=>[todo] Bootstrap관련 글 하나 쓰고 거기로 다 모아. 그리고 링크
- http://localhost:8080/blog/entry/index를 요청하면 http://localhost:8080/blog/user/login으로 이동한다.
권한을 설정하는 방법은 많지만 필터를 사용한다. =-=>이 방법들 조사해서 정리하고 링크!!!
- 필터 생성
grails> create-filters com.sample.auth.security
class SecurityFilters { def filters = { checkLogin(controller:'*', action:'*') { before = { if(session.user){ return true } if(controllerName == null && actionName == null){ //첫 페이지 호출은 제외 }else if(actionName == "login" || actionName == "authenticate" || actionName == "logout"){ //로그인 페이지 호출은 제외 }else{ //redirect(controller:"user", action:"login") render "You're not authenticated" return false } } } } }
- 사용 도메인 생성
grails> create-domain-class com.sample.auth.User
grails> create-controller com.sample.auth.User
grails> create-controller com.sample.auth.User
class User { String userId String password static constraints = { userId(blank:false, unique:true) password(blank:false, password:true) } String toString(){ userId } }
class UserController { def scaffold = User def login() { } def authenticate(){ def user = User.findByUserIdAndPassword(params.userId, params.password) if(user){ session.user = user flash.message = "Hello ${user.userId}!" }else{ user = new User(params) flash.message = "Sorry, ${params.userId}. Please try again." } render(view: "login", model: [userInstance:user]) //redirect(action:"login") } def logout(){ flash.message = "Goodbye ${session.user.userId}" session.user = null redirect(action:"login") } }- login.gsp를 만든다.
grails> generate-views com.sample.auth.User
create.gsp를 login.gsp로 바꾼다. 몇군데 수정필터에서 리다이렉트 시킨다.
<%@ page import="com.sample.auth.User" %> <!DOCTYPE html> <html> <head> <meta name="layout" content="main"> <g:set var="entityName" value="${message(code: 'user.label', default: 'User')}" /><!--//fixme=필요있나?--> <title><g:message code="login.label" default="Login" /></title> </head> <body> <a href="#create-user" class="skip" tabindex="-1"><g:message code="default.link.skip.label" default="Skip to content…"/></a><!--//fixme=필요있나?--> <div class="nav" role="navigation"> <ul> <li><a class="home" href="${createLink(uri: '/')}"><g:message code="default.home.label"/></a></li> <li><g:link class="list" action="list"><g:message code="default.list.label" args="[entityName]" /></g:link></li> <li><g:link class="list" action="logout"><g:message code="logout.label" default="Logout" /></g:link></li><!--//fixme=여기에 로직을 넣어야 하는데...이래도 되나?--> </ul> </div> <div id="create-user" class="content scaffold-create" role="main"> <h1><g:message code="login.label" default="Login" /></h1> <g:if test="${flash.message}"> <div class="message" role="status">${flash.message}</div> </g:if> <g:hasErrors bean="${userInstance}"> <ul class="errors" role="alert"> <g:eachError bean="${userInstance}" var="error"> <li <g:if test="${error in org.springframework.validation.FieldError}">data-field-id="${error.field}"</g:if>><g:message error="${error}"/></li> </g:eachError> </ul> </g:hasErrors> <g:form action="authenticate" > <fieldset class="form"> <g:render template="form"/><!-- 지우고 아래 부분을 추가 --> <div class="fieldcontain ${hasErrors(bean: userInstance, field: 'userId', 'error')} required"> <label for="userId"> <g:message code="user.userId.label" default="User Id" /> <span class="required-indicator">*</span> </label> <g:textField name="userId" required="" value="${userInstance?.userId}"/> </div> <div class="fieldcontain ${hasErrors(bean: userInstance, field: 'password', 'error')} required"> <label for="password"> <g:message code="user.password.label" default="Password" /> <span class="required-indicator">*</span> </label> <g:field type="password" name="password" required="" value="${userInstance?.password}"/> </div> </fieldset> <fieldset class="buttons"> <g:submitButton name="login" class="save" value="${message(code: 'login.label', default: 'Login')}" /> </fieldset> </g:form> </div> </body> </html>
- Bootstrap에 User 데이터를 넣어둔다. =-=>[todo] Bootstrap관련 글 하나 쓰고 거기로 다 모아. 그리고 링크
- http://localhost:8080/blog/entry/index를 요청하면 http://localhost:8080/blog/user/login으로 이동한다.
- [Grails] 게시판 만들기 1
- 日常茶飯事
- 2012. 12. 29. 04:15
- 시작
- 스캐폴딩
EntryContoller를 클릭하면 404에러가 난다.
EntryContoller.groovy
다시 호출해본다.
아직은 입력 필드가 없다.
- 도메인 생성
Entry.groovy
- stats 로 확인
> mygrails create-app blog
> cd blog
> grails //start mygrails
grails> create-domain-class com.sample.blog.Entry
grails> create-controller com.sample.blog.Entry
grails> run-app
> cd blog
> grails //start mygrails
grails> create-domain-class com.sample.blog.Entry
grails> create-controller com.sample.blog.Entry
grails> run-app
- 스캐폴딩
EntryContoller를 클릭하면 404에러가 난다.
EntryContoller.groovy
class EntryContoller{ def scaffold = Entry }
다시 호출해본다.
아직은 입력 필드가 없다.
- 도메인 생성
Entry.groovy
class Entry{ String title String content static constraints = { title(blank:false) content(blank:false) } }
- stats 로 확인
Recent comment