# 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