【共同制作】ホテルの予約ページ

hotel トップページサムネLaravel
Crystal Resort

初めに

プログラミング学習の成果物として今回のポートフォリオを制作いたしました。
採用面接およびアウトプットとしてこちらに投稿します。

経緯

Gitのブランチやmaster周りの考え方やコミット、プルなどの基本的な挙動の理解を深めるために作業開始。
E-R図や1対多、多対一、多対多などのリレーションの理解を深める目的。

ポートフォリオについて

共同制作(4人)により作成をした。
当方は、以下の内容に従事。

  • 管理者としてログイン機能の実装
  • 部屋種別、部屋管理ページを作成
  • 各人に対して、進捗確認

 

開発環境

  • PHP 8.2.4
  • Laravel 10.10
  • Bootstrap 4.5
  • MySQL
  • Github
  • Visual Studio Code

実装機能

No機能      機能について
1新規登録機能利用者を新規登録することができる
2更新機能利用者情報を更新することができる
3削除機能利用者情報を削除することができる
4削除した情報の復元機能ソフトデリートにより、削除した情報の復元も可能
5表示機能DBに保存された内容を表示
外部キーを利用することで、別DBの情報を取得
6空室検索機能ダブルブッキングをしないように、予約時に空室検索をする
7ログイン機能管理者としてログイン機能を搭載
ログインしないと表示されないページ有

DB設計

ホテルのER図

ER図

ER図

セキュリティ対策

クロスサイトリクエストフォージェリ (CSRF)
今回はPHPフレームワークのLaravelを使用しました。

Laravelは、アプリケーションによって管理されているアクティブなユーザーセッションごとにCSRF「トークン」を自動的に生成します。このトークンは、認証済みユーザーが実際にアプリケーションへリクエストを行っているユーザーであることを確認するために使用されます。このトークンはユーザーのセッションに保存され、セッションが再生成されるたびに変更されるため、悪意のあるアプリケーションはこのトークンへアクセスできません。

と、Laravelの公式ページに記載があるので、

@CSRFのBladeディレクティブを使用して、非表示のトークン入力フィールドを生成しました。

デプロイ

エックスサーバーを使用してデプロイしております。
手順として以下のことを実施しました。

  • SSHでレンタルサーバーと紐づける
    セキュリティを考慮し、公開鍵を生成
  • レンタルサーバー内のPHPバージョンの設定
  • 生成した公開鍵をGithubに登録
  • mysqlの追加およびアクセス権の追加処理
  • gitよりcloneを実施
  • .envファイルの設定
  • 本番環境へ各種ファイルを配置
  • URL到達時の初期読み込み場所を指定する
    シンボリックリンクの扱いがわからなかったため、index.php内の記述を変更
  • .htaccessの設定
  • BREEZEインストールに伴い、nodeとnpmをインストール
  • VITEを利用可能にする。

工夫した点

  • BREEZEの導入に伴い、nodeやnpmの環境を見直す必要があった点

ポートフォリオの課題点

  • マルチログインに対応させたかった。

まとめ

Laravel6をこれまで取り扱っていたが、Laravel10を初めて扱った。コントローラやモデル、ルーティング周りの記載方法が少々異なる点が良い気付きとなった。