1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

転職活動管理アプリを作ろう③(ログイン実装チュートリアル~テーブル定義)

Posted at

前回は コチラ
※ 2021/09/13 時点で未完

ログインを実装してみよう

  • 以下チュートリアルを行う

  • 上記チュートリアルだとインメモリにアカウントレコードを登録し、そのレコードに対し認証を行う
  • MySQL を使用するように設定変更を行う
    • 設定変更をして動作確認ができるように、テーブル定義だけ先に行うことにした

テーブル定義

  • 各テーブルについて所管を記述する
  • 実際のテーブル定義書については後ほど公開するかも
  • (少しずつ追記していきます)

アカウント情報

  • テーブル名は「Account」

  • spring-boot-starter-security が提供してくれるアカウント情報テーブル(= User テーブル)の初期スキーマは以下

    • username:String
      • ユーザー名称。DaoAuthenticationProvider に渡されて認証が行われる
    • password:String
      • パスワード。DaoAuthenticationProvider に渡されて認証が行われる
    • enabled:boolean
      • 論理削除フラグ。
    • accountNonExpired:boolean
      • アカウントの有効性フラグ。
    • credentialsNonExpired:boolean
      • 認証情報(通常はパスワード)の有効性フラグ。
      • 最近の考え方だとパスワードの頻繁な変更は脆弱とのことなので、今はあまり使わないかな?
      • パスワードを忘れた時の対処とかに流用できそう。
    • accountNonLocked:boolean
      • アカウントロックフラグ。
    • authorities:Collection extends GrantedAuthority>
      • 役割。
      • 一旦 String 配列で持ったあと、createAuthorityList() で GrantedAuthority の List 化
      • チュートリアル中だと、WebSecurityConfig#userDetailsService()User.role("USER") で実行される
  • 上記初期スキーマの内容で十分なので、このままテーブルを作成する

    • 作成日、最終更新日ぐらいは追加しておく
  • ちなみに org.springframework.security.core.userdetails.User エンティティクラスを提供してくれているので、使い方は Javadoc を参照

    • 実装する際には一応継承して自作クラスを使用しようね

役割

  • DB にテーブルは作らない
    • enum 型にして静的に持つことにした
  • 取り得る値は以下
    • ROLE_USER
      • 一般ユーザー
    • ROLE_ADMIN
      • 管理者
  • 今の所、各役割で動作の振る舞いは変わらない。気が向いたらどこかの画面の実装で出し分けしてみる
  • 役割テーブルを作って DB に格納 → アプリケーション起動時にメモリに格納 → 静的に運用、も考えたけど保持する情報が文字列だけなので不要と判断
    • 各役割ごとに実施できる機能も DB で管理するならアリ

エージェント

  • テーブル名は「Agent」
  • スキーマは以下を想定
    • id:sequence
      • PK。
    • name:String
      • エージェント名称(会社名)
    • top_url:String
      • トップページURL
    • login_url:String
      • ログインURL

エージェント担当者

  • テーブル名は「AgentRecruiter」
  • スキーマは以下を想定
    • id:sequence
      • PK。
    • agent_id:int
      • Agent テーブルの ID(外部キー)
    • name:String
      • 担当者名
    • email:String
      • メールアドレス

企業

  • テーブル名は「Company」
  • スキーマは以下を想定
    • id:sequence
      • PK。
    • name:String
      • 企業名称
    • corporate_url:String
      • コーポレートサイトの URL
    • recruit_url:String
      • 採用サイトの URL

企業の求人票

  • テーブル名は「CompanyJobPosting」

企業のマークダウン形式メモ

  • テーブル名は「CompanyMarkdown」

企業の評価ポイント

  • テーブル名は「CompanyEvaluationStandard」

選考ステップ

  • DB にテーブルは作らない
    • enum 型にして静的に持つことにした
  • 取り得る値は以下
    • IN_BOX
      • 候補
    • SCREENING
      • 書類選考
    • PRIMARY
      • 一次選考
    • SECONDARY
      • 二次選考
    • FINAL
      • 最終選考
  • 選考ステップの中に後述の「選考ステータス」を持つ

選考ステータス

  • DB にテーブルは作らない
    • enum 型にして静的に持つことにした
  • 取り得る値は以下
    • NEW
      • 新規作成
    • IN_PLANNING
      • 計画中・準備中
    • NOT_READY
      • 実施予定なし
    • WAITING
      • 待機中
    • READY
      • 準備完了
    • IN_PROGRESS
      • 実施中
    • PENDING
      • 保留中
    • REJECTED
      • 拒否
    • CANCELED
      • キャンセル
    • COMPLETED
      • 完了

メモ

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?