# Google Drive OAuth Setup Guide (සිංහලෙන්)


✅ **Free Gmail account එකකින් වැඩ කරයි** - Google Workspace ඕනේ නැහැ  
✅ **ඔයාගේම Drive account එකට upload වෙනවා** - පහසුවෙන් files බලන්න පුළුවන්  
✅ **Storage quota තියෙනවා** - Service Account වලට වගේ quota නැති problem එකක් නැහැ  

---

## පියවර 1: OAuth Client Credentials හදාගන්න

### 1.1 Google Cloud Console එකට යන්න

1. https://console.cloud.google.com වෙත browser එකෙන් යන්න
2. ඔයාගේ Google account එකෙන් sign in කරන්න

### 1.2 Project එකක් තෝරන්න හෝ හදන්න

- අල්ලපු Project එක තියෙනවා නම් ඒක select කරන්න
- නැත්නම් **"New Project"** click කරලා project එකක් හදාගන්න
  - Name: `GYM Backup` (හෝ ඕනේ නමක්)
  - Click **"Create"**

### 1.3 Google Drive API එක enable කරන්න

1. වම් පැත්තේ menu → **"APIs & Services"** → **"Library"**
2. Search box එකේ type කරන්න: `Google Drive API`
3. **"Google Drive API"** click කරන්න
4. **"Enable"** button එක click කරන්න

### 1.4 OAuth Consent Screen එක setup කරන්න

1. වම් පැත්තේ menu → **"OAuth consent screen"**
2. **User Type select කරන්න:**
   
   ⚠️ **වැදගත්!** ඔයාට මොකද්ද තියෙන්නේ කියලා බලලා select කරන්න:
   
   - **Internal** = Google Workspace (Business/School) account තියෙනවා නම්
     - විතරක් organization users ලට use කරන්න පුළුවන්
     - Verification එකක් ඕනේ නැහැ
   
   - **External** ✅ = **Free Gmail account** තියෙනවා නම් **මේක select කරන්න**
     - ඕනේම Google account එකකින් use කරන්න පුළුවන්
     - "Unverified app" warning එකක් එනවා (normal එකක්, skip කරන්න පුළුවන්)
     - Test users add කරන්න ඕනේ
   
   **බොහෝ විට ඔයාට "External" තමයි ඕනේ වෙන්නේ!** ඒක select කරලා **"Create"** click කරන්න

3. මේ details fill කරන්න:
   - **App name**: `GYM Management System`
   - **User support email**: ඔයාගේ email එක select කරන්න
   - **Developer contact**: ඔයාගේ email එක type කරන්න
4. **"Save and Continue"** click කරන්න
5. **Scopes** page එකේ - කිසිම එකක් add කරන්න එපා, scroll down කරලා **"Save and Continue"**
6. **Test users** page එකේ:
   - **"+ Add Users"** click කරන්න
   - ඔයාගේ Gmail address එක type කරන්න (backup upload කරන්න යන account එක)
   - **"Add"** click කරන්න
   - **"Save and Continue"** click කරන්න
7. Summary page එකේ **"Back to Dashboard"** click කරන්න

### 1.5 OAuth Client ID එක හදාගන්න

1. වම් පැත්තේ menu → **"Credentials"**
2. උඩ **"+ Create Credentials"** click කරන්න
3. **"OAuth client ID"** select කරන්න
4. **Application type**: **"Web application"** select කරන්න
5. **Name**: `GYM Backup Web Client`
6. **Authorized redirect URIs** section එකේ:
   - **"+ Add URI"** click කරන්න
   - Type කරන්න: `http://127.0.0.1:8000/backup/oauth/callback`
   - (Production server එකක deploy කරනවා නම්, ඒ URL එකත් add කරන්න: `https://yourdomain.com/backup/oauth/callback`)
7. **"Create"** click කරන්න

### 1.6 Client ID සහ Client Secret copy කරන්න

- Popup එකක් එයි "OAuth client created" කියලා
- **Client ID** සහ **Client secret** පෙන්වයි
- මේ දෙක copy කරගෙන safe place එකක save කරගන්න (notepad එකක හෝ වෙන තැනක)

---

## පියවර 2: ඔයාගේ Application එකේ OAuth Setup කරන්න

### 2.1 Settings page එකට යන්න

1. ඔයාගේ GYM Management System එකට login වෙන්න
2. **Settings** → **Backup & Recovery** tab එකට යන්න

### 2.2 Credential Type එක වෙනස් කරන්න

1. **"Authentication Method"** section එක බලන්න
2. Select කරන්න: **"OAuth (Personal Google Account)"**

### 2.3 Client Credentials enter කරන්න

1. **"OAuth Client ID"** field එකට - copy කරපු **Client ID** එක paste කරන්න
2. **"OAuth Client Secret"** field එකට - copy කරපු **Client secret** එක paste කරන්න
3. **"Save OAuth Settings"** button එක click කරන්න

---

## පියවර 3: Google Account එක Authorize කරන්න

### 3.1 Authorization start කරන්න

1. **"Authorize Google Drive Access"** button එක click කරන්න
2. නව browser tab එකක් open වෙයි Google login page එක

### 3.2 Google එකෙන් permission දෙන්න

1. ඔයාගේ Google account එක select කරන්න (backup upload කරන්න යන account එක)
2. Warning එකක් එයි "Google hasn't verified this app" කියලා:
   - **"Advanced"** click කරන්න
   - **"Go to GYM Management System (unsafe)"** link එක click කරන්න
   - (මේක safe එකක්, ඔයාගේ app එකම ඔයාට access දෙනවා)
3. Permission screen එකේ:
   - "See, edit, create, and delete only the specific Google Drive files you use with this app" කියන permission එක පෙන්වයි
   - **"Continue"** click කරන්න

### 3.3 Authorization complete

- Browser එක redirect වෙයි Settings page එකට
- Green message එකක් එයි: **"OAuth authorization successful!"**
- **Authorization Status** section එකේ ✅ **"Authorized"** පෙන්වන්න ඕනේ

---

## පියවර 4: Backup කරන්න Try කරන්න!

1. Settings page එකේම **"Google Drive Folder ID"** field එක empty කරන්න (හෝ specific folder එකක් upload කරන්න නම් folder ID එක දාන්න)
2. **"Test Connection"** button එක click කරන්න
   - ✅ Green success message එකක් එන්න ඕනේ
3. **"Create Backup Now"** button එක click කරන්න
   - Wait කරන්න backup එක create වෙනකන්
   - ✅ Success message එකක් එන්න ඕනේ!

4. **ඔයාගේ Google Drive එකට යන්න** සහ backup file එක තියෙනවද බලන්න:
   - drive.google.com එකට යන්න
   - "My Drive" එකේ `backup_yourdb_2025-12-18_HHMMSS.sql` වගේ file එකක් තියෙන්න ඕනේ

---

## Troubleshooting (ගැටලු විසඳීම)

### "OAuth not authorized" error එකක්

**විසඳුම:**
- පියවර 3 ආපහු කරන්න - **"Authorize Google Drive Access"** button එක click කරලා authorize කරන්න

### "Redirect URI mismatch" error එකක්

**විසඳුම:**
- Google Cloud Console → Credentials → OAuth Client එකට යන්න
- **Authorized redirect URIs** බලන්න: `http://127.0.0.1:8000/backup/oauth/callback` තියෙනවද කියලා
- නැත්නම් add කරලා save කරන්න

### "Access blocked: This app's request is invalid" error එකක්

**විසඳුම:**
- Google Cloud Console → OAuth consent screen → **Test users** section එකට යන්න
- ඔයාගේ Gmail address එක test users list එකේ add කරලා තියෙනවද බලන්න
- නැත්නම් **"+ Add Users"** click කරලා email එක add කරන්න

### Backup upload වෙන්නේ නැහැ

**විසඳුම:**
1. Settings → Backup & Recovery → **"Test Connection"** click කරන්න
2. Error message එක copy කරගෙන logs බලන්න: `storage/logs/laravel.log`
3. Authorization status check කරන්න (✅ "Authorized" පෙන්වන්න ඕනේ)
4. Token expire වෙලා තියෙනවා නම්, automatic refresh වෙන්න ඕනේ - නැත්නම් **"Revoke Authorization"** click කරලා ආපහු authorize කරන්න

---

## විශේෂ සටහන්

### Folder ID එකක් use කරනවා නම්

ඔයාට backup files specific folder එකක save කරන්න ඕනේ නම්:

1. Google Drive එකේ folder එකක් හදන්න (උදාහරණ: "GYM Backups")
2. ඒ folder එක open කරන්න
3. Browser URL එකෙන් folder ID එක copy කරන්න:
   ```
   https://drive.google.com/drive/folders/1ABC-xyz123_FOLDER_ID_HERE
   ```
4. Settings → Backup & Recovery → **"Google Drive Folder ID"** field එකට paste කරන්න
5. **"Save Settings"** click කරන්න

### Authorization revoke කරන්නේ කොහොමද?

Authorization එක remove කරන්න ඕනේ නම්:

1. Settings → Backup & Recovery එකට යන්න
2. **"Revoke Authorization"** button එක click කරන්න
3. Authorization status එක වෙනස් වෙයි "Not Authorized" වෙත

### Token refresh එක automatic ද?

**ඔව්!** Access token එක expire වුණාම (1 hour කින්), system එක automatic refresh token එක use කරලා නව token එකක් ගන්නවා. ඔයාට කිසිම දෙයක් කරන්න වෙන්නේ නැහැ.

---

## සාර්ථක Setup එකක් හදාගත්තොත්

✅ Authorization status: **"Authorized"** පෙන්වන්න ඕනේ  
✅ **"Test Connection"** green success message එකක් දෙන්න ඕනේ  
✅ **"Create Backup Now"** backup එක upload කරන්න ඕනේ  
✅ Google Drive එකේ backup file එක පෙන්වන්න ඕනේ  

දැන් ඔයාගේ backup system එක fully functional!

### ඊළඟ පියවර:

1. **Backup Schedule** set කරන්න (උදාහරණ: daily at 2:00 AM)
2. **Retention Days** set කරන්න (උදාහරණ: 30 days)
3. **Enable Automated Backups** checkbox එක tick කරන්න
4. **Save Settings** click කරන්න

දැන් automated backups ඔයාගේ schedule එකට අනුව run වෙන්න පටන් ගන්නවා! 🎉

---

**උදව් ඕනේද?** `storage/logs/laravel.log` file එකේ detailed error logs බලන්න හෝ error message එක copy කරලා පේස්ට් කරන්න.
