# Laravel Steps-Sprint 工時紀錄表

![PHP Version](https://img.shields.io/badge/PHP-8.3-777BB4?logo=php&logoColor=white)
![Laravel Version](https://img.shields.io/badge/Laravel-11-FF2D20?logo=laravel&logoColor=white)
![License](https://img.shields.io/badge/License-Apache%202.0-blue)

## 環境版本

- php 8.3
- Laravel 11.34.2

## Docker 環境

- [Docker Prod 環境](./docker/prod/README.md) - 生產環境 Docker 配置

## Installation

基本安裝

```sh
cp .env.example .env
composer install
npm install
npm run build
```

修改資料夾權限

```sh
chown -R www-data:www-data storage/ bootstrap/ public/
```

資料庫設定

```sh
vim .env
```

| Name | Description |
| ------ | ------ |
| DB_CONNECTION | 連線方式 |
| DB_HOST | Host Or IP |
| DB_PORT | 連線Port |
| DB_DATABASE | 資料庫名稱 |
| DB_USERNAME | 連線帳號 |
| DB_PASSWORD | 連線密碼 |

### 第一次環境設定

```sh
npm run build
php artisan key:generate
php artisan migrate
php artisan module:publish
php artisan storage:link
php artisan task:create

# 創建預設角色權限
php artisan db:seed --class=Modules\\User\\Database\\Seeders\\RoleAndPermissionSeeder

# 創建預設管理者
php artisan db:seed --class="Modules\User\Database\Seeders\DefaultUserSeeder"
```

### 寄信 Google SMTP 設定

`vim .env`

| Name | Value |
| ------ | ------ |
| MAIL_DRIVER | smtp |
| MAIL_HOST | smtp.gmail.com |
| MAIL_PORT | 587 |
| MAIL_USERNAME | <帳號> |
| MAIL_PASSWORD | <密碼> |
| MAIL_ENCRYPTION | tls |
| MAIL_FROM_ADDRESS | <寄件者信箱> |
| MAIL_FROM_NAME | <寄件者名字> |

### Google OAuth 設定

- [申請 Google OAuth](https://console.cloud.google.com/apis/credentials?hl=zh-tw)

`vim .env`

```sh
GOOGLE_CLIENT_ID=<用戶端ID>
GOOGLE_CLIENT_SECRET=<用戶端密碼>
GOOGLE_REDIRECT_URI=<重定向URI>
```

### OAuth 與網域限制設定

| Name | Description |
| ------ | ------ |
| ALLOWED_OAUTH_PROVIDERS | 允許的 OAuth 登入提供者（逗號分隔），例如：google |
| AUTH_DOMAIN_RESTRICTION | 是否啟用網域限制（true/false） |
| AUTH_ALLOWED_DOMAINS | 允許登入的網域（逗號分隔），例如：example.com |

### CSP (Content Security Policy) 設定

| Name | Description |
| ------ | ------ |
| CSP_ENABLED | 是否啟用 CSP（true/false） |

### 每日工時設定

| Name | Description | 預設值 |
| ------ | ------ | ------ |
| WORK_HOURS_MONDAY | 週一工時 | 7.5 |
| WORK_HOURS_TUESDAY | 週二工時 | 7.5 |
| WORK_HOURS_WEDNESDAY | 週三工時 | 7.5 |
| WORK_HOURS_THURSDAY | 週四工時 | 7.5 |
| WORK_HOURS_FRIDAY | 週五工時 | 7.0 |
| WORK_HOURS_SATURDAY | 週六工時 | 0 |
| WORK_HOURS_SUNDAY | 週日工時 | 0 |

## Plugins

### 基本

| Name | Plugin |
| ------ | ------ |
| Module | nwidart/laravel-modules:^11 |
| Breadcrumbs | diglactic/laravel-breadcrumbs:^9.0 |
| Laravel-CSP | spatie/laravel-csp:^2.10 |
| Laravel-permission | spatie/laravel-permission:^6.9 |
| Laravel-activitylog | spatie/laravel-activitylog:^4.8 |

## 角色權限新增/更新

執行 創建預設角色權限

```sh
php artisan db:seed --class=Modules\\User\\Database\\Seeders\\RoleAndPermissionSeeder # 創建權限和角色
```
