hokui/hokui.net — pull request #35 by endaaman (2014-09-26 17:19:49+00:00)
Title: 2-Step Deletion / Notification / Page Restriction

### 内部的な変更
* サービスを`hokuiApp`と`hokuiService`に分離
* 初期化をng-appからangular.bootstrapへ
* Authサービスのインターフェースを変更
今まではサービスの変数を関数でラップするとちゃんとデータバンディングされず`Auth.current.active`みたいに生のオブジェクトを晒さないといけなかったが(外部からミュータブル)、いつの間にか関数でラップしてもバインディングされるようになっていたので関数でラップしてイミュータブルに変更(元からできて俺の勘違いの可能性もあるが)。
* 初回の`$stateChageStart`で`GET /api/users/profile`を叩くように変更
各ページに認証状態を使ったアクセス制限(PageRestriction)を遷移イベント時にできるようにしたかったが、初回アクセス時はアクセス制限の確認をする段階ではAPIの戻り値が取得できておらず、制限ができない。
なんとかしてAPIを待機する苦肉の策として、初回のページ遷移イベント(空state→初回のstate( `/`なら`'main'`,
`/admin`なら`'admin'` ))で遷移イベントを一旦中止して、イベント内でAPIを待機して、戻り値がとれた段階で改めてページ遷移を発生させる、ということをしている。
多分誰もこんなことやってないと思うけど一応動くので、Angular本体やUI Routerのアップデートでできるようになるまでこの実装で行く。
* リソースを管理するサービスを追加(ResourceStore)
* サービスの分離にともなってビルドの設定を変更

### 削除の確認
`削除する`ボタンを押したときに削除の確認をするようにした。

### 通知機能
リソースの変更や注視すべきイベントが起きた時に通知を表示するようにした。

### アクセス制限
ユーザーの権限によってページのへの柔軟にアクセス制限(admin, user, guestの3レベル)をできるようにした。
今のところ`/admin`にしかつけてないが、非adminユーザー(usr, guest)ではサイト内のリンクを踏んでも直接入ろうとしても(`$stateChageStart`のハックありきで)アクセス出来ないようになってます。