authenticationプラグインをちょっと触る
サインアップ用のformの作り方がオフィシャルなドキュメントに書いてあったので試したのだが、どうもうまくいかない。
<g:if test="${flash.authenticationFailure}"> Login failed: ${message(code:"authentication.failure."+flash.authenticationFailure.result).encodeAsHTML()} </g:if> <auth:form authAction="signup" success="[controller:'portal', action:'newUser']" error="[controller:'portal', action:'signup']"> User: <g:textField name="login"/><br/> Password: <input type="password" name="password"/><br/> Confirm Password: <input type="password" name="confirmPassword"/><br/> <input type="submit" value="Create account"/> </auth:form>
上記の記述だとサインアップの成功時にはPortalControllerのnewUserアクションが、失敗時にはsignupアクションが呼ばれるはず。
そのへんをいろいろいじってやってみたがどうやってもerrorのアクションが呼ばれる。
で、ソースを読んだら、用意されているサインアップ用のFormModel、SignUpFormの定義が
package authentication class SignupForm { String login String email String password String passwordConfirm boolean rememberMe static constraints = { login(size:6..40, blank:false, nullable: false) email(email:true, size:6..40, blank:false, nullable: false) password(size:6..40, password:true, blank:false, nullable: false) passwordConfirm(password:true, validator: { val, obj -> obj.password == val }) } }
こうなってる。
確認用のパスワードのフィールド名がドキュメントとソースで違ってます。
これでは必ずvaidatorで失敗する。
grailsのプラグインはいろいろあるけど、ドキュメントがあまりそろってないし(英語だし)、使用例とかもあまり見つからないのが多いからこういうどうでもいいところでつまづいてしまう。
早くサクサクやれるようになりたいものです。