でもって、この辺で「製造元の情報は表示はするけど、編集とか新規登録は一定の人間にしか触らせない」ということを実現するために、認証機能を付けてみます。
25.Acegiプラグインを入れる。
Acegiについては、第5回GCRの山本ざっくりメモを参照してください。
当日は、ver.0.3でやりました。
・Acegiのインストール
$ grails install-plugin /ダウンロードしたディレクトリ/grails-acegi-0.3.zip
・下記二つ実行
$ grails create-auth-domains
$ grails generate-manager
そうすると、grails-appの中に、いろいろ出来てきます。
でも今回は一切触りません。あるユーザ権限を持つユーザのみが??を操作できるというような感じにします。
この辺で、いちいちrun-appの度にデータがクリアされるのが面倒なのでDataSource.groovyをちょっとだけ書き換えて、登録したデータが残るようにします。
development {
dataSource {
dbCreate = "update" // one of 'create', 'create-drop','update' //create-dropからupdateに変更
url = "jdbc:hsqldb:file:devDB;shutdown=true"
}
}
test {
dataSource {
dbCreate = "update"
url = "jdbc:hsqldb:mem:testDb"
}
}
production {
dataSource {
dbCreate = "update"
url = "jdbc:hsqldb:file:prodDb;shutdown=true"
}
}
Acegi-pluginを入れたところからは、Grailsインストール+簡単な認証付きアプリをサックリ作成して動作確認。を参考にしてください。
今回の場合、Companyを触れるユーザと触れないユーザを分けたいので、
roleを「admin」「user」と2つ作って、適当な2人のユーザを作って、それぞれに割り当てます。最後にRequestmapで、/company/**をadminだけにすると、userのroleしか持ってないユーザは、そのページに行こうとしても「権限ないよ」と言われます。
で、適当なプロジェクトですけど、Morphに上げますので、そこで動作を見てください。
この辺で、TagLibをちょっと。というか、scaffoldしたときの日付表示が英語っぽいので、表示を逆にしたTagLibが社内にあったので、こっそり流用。山本師曰く、順番逆にしただけ、らしいです。
どこかにソースを上げておくと思うで、興味がある人はそこで見てみてください。
item.groovyの中のreleaseがDateなので、これを日本人が見てわかりやすいようにしてみます。
で、ここで、GSPがないと書き換えられないので、generate-allして、views/itemの下に、create.gsp
list.gsp
show.gsp
edit.gsp
を書き出します。
grails generate-all item
create.gspとedit.gspの下記をちょりっと修正します。
<!-- <g:datePicker
name="release"
value="${item?.release}" ></g:datePicker> -->
<ex:datePicker name="release"
precision="day"
years="${2000..2050}"
value="${item?.release}">
</ex:datePicker><br/>
こんな感じです。
もうひとつ、表示している方のshow.gspもちょりっと直します。
<!-- <td valign="top"
class="value">${fieldValue(bean:item, field:'release')}</td>
-->
<td valign="top" class="value">
<g:formatDate date="${item.release}"
format="yyyy/MM/dd" /></td>
これで、なんとなく違和感があったところが修正されました。
これぐらいで、一回Morphにアップしようと思います。
http://mkawa.morphexchange.com/
ここだと、URLにgcroneがつけられない?ので、HOMEとかクリックすると、出ません。適当にURLを変えてみてください。一通りできます。
ユーザも制限かけてないので作れます。
2 件のコメント:
参考にさせていただいています。
「表示を逆にしたTagLibが社内にあったので、(略)
どこかにソースを上げておくと思うで、興味がある人はそこで見てみてください。」
ex:datePickerのソースはどこでしょうか?
url = "jdbc:hsqldb:file:devDB;shutdown=true"
に変更
コメントを投稿