---
# System prepended metadata

title: Handling Term when sign up/sign in ca

---

# Handling Term when sign up/sign in ca 
## 背景
+ Term take outの後、会計以外のクラウドサービスから、会計に来て、開始利用するときに、OfficeMemberが存在しているが、Termがまだないということがあり。
-> なので、その場合はログイン処理の中に、いつかのタイミングにTermを作成することが必要になる

### Web対応
こんな順番で処理している
+ Termがないユーザーを初めて**会計にログイン**
↓
+ Skip reject_not_activated_office_member!なので、Home pageとかにリダイレクトされる
↓
+ ca_registered_atまだ nil なので、terms_of_use_agreement_filter!で**利用規約画面に遷移される**
↓
+ 同意して、またHomeページに来て、reject_not_activated_office_member!の処理に入って、current_office_memberのオーナーである場合、**Termを作成する**


### モバイルって、どうしよう？
#### 現在の状況（他のクラウドサービスから会計に来て、開始利用しるとき）
こんな順番で処理している
+ ユーザーを初めて**会計にログイン**
↓
+ Refresh user status（current_term_id, current_office_idとか最新する）
↓
+ set up data for response JSON
    ```JSON
    current_user_status_id: 'us_id_hoge'
    current_office_id: 'of_id_hoge
    current_term_id: 'term_id_hoge' / 0(after term take out)
    ca_registered: false
    ```
    ↓
+ 利用規約同意画面
↓
+ DONE(先のcurrent_term_idがアプリの動かす途中にずっと使われる)


#### モバイルの場合には、何時にTermを作成したほうが良い？
+ Webの様に利用規約同意したあと、作成する
    + モバイル側がcurrent_term_idを取れなくて、ダメそう。
+ sign_in userの直後にチェックして、作成する
    + ロジックが大丈夫かな？（会計にまだ開始利用していない状態でTerm作成するが非ロジックかも）

https://github.com/moneyforward/ca_web/blob/69ca573f53eb312bfcf74d62dc9a4df4dd1e93b1/app/controllers/api/v2/mobile/oauth_by_mfid/sessions_controller.rb#L26-L31


###### tags: term
