Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 72 additions & 0 deletions work_project/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg

# Virtual Environment
venv/
env/
ENV/
.venv

# Django
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
/media
/staticfiles

# Environment variables
.env
.env.local
.env.*.local

# IDE
.vscode/
.idea/
*.swp
*.swo
*~

# OS
.DS_Store
Thumbs.db

# Debug files
debug_*.py
*_debug.py

# Test files
*.json
!package.json
!package-lock.json

# Reports
*_report_*.json

# Temporary files
*.tmp
*.bak
*.backup

# Docker
.dockerignore

18 changes: 18 additions & 0 deletions work_project/django_app/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# === Django ===
SECRET_KEY=change_me_in_prod
DEBUG=True
ALLOWED_HOSTS=*
CORS_ALLOW_ALL=True
# CORS_ALLOWED_ORIGINS=https://twoja-domena.pl,https://app.twoja-domena.pl

# === JWT lifetimes ===
JWT_ACCESS_MINUTES=30
JWT_REFRESH_DAYS=7

# === Superuser bootstrap (optional) ===
[email protected]
SUPERUSER_PASSWORD=admin123
SUPERUSER_FULL_NAME=Admin

# Host port mapping (host:container)
PORT=8000
23 changes: 23 additions & 0 deletions work_project/django_app/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
FROM python:3.12-slim

ENV PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1 PIP_NO_CACHE_DIR=1

WORKDIR /app

# System deps
RUN apt-get update && apt-get install -y --no-install-recommends build-essential && rm -rf /var/lib/apt/lists/*

# Copy requirements first (better layer caching)
COPY coworking/requirements.txt /app/requirements.txt
RUN pip install --upgrade pip && pip install -r /app/requirements.txt

# Copy app
COPY coworking /app

# Entrypoint
COPY docker/entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

EXPOSE 8000

CMD ["/entrypoint.sh"]
77 changes: 77 additions & 0 deletions work_project/django_app/coworking/ENABLE_GOOGLE_LOGIN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# 🔧 Jak włączyć Google Login po konfiguracji

## ✅ **Status obecny:**
- Google Login jest **tymczasowo wyłączony** aby uniknąć błędów 400
- Wszystkie inne funkcje działają normalnie
- Email 2FA jest w pełni funkcjonalny

## 🚀 **Jak włączyć Google Login:**

### 1. **Skonfiguruj Google OAuth**
Postępuj zgodnie z instrukcjami w `GOOGLE_OAUTH_INSTRUCTIONS.md`:
- Utwórz projekt w Google Cloud Console
- Skonfiguruj OAuth 2.0 Client ID
- Zaktualizuj wartości w Django Admin

### 2. **Włącz przycisk Google Login**
Po skonfigurowaniu prawdziwych kluczy Google:

#### **W pliku `templates/login/index.html`:**
```html
<!-- Usuń komentarz z tej sekcji: -->
<div class="divider">
<span>{% trans 'or' %}</span>
</div>

<div class="social-login">
<a href="/accounts/google/login/" class="btn btn-google">
<!-- SVG Google logo -->
{% trans 'Continue with Google' %}
</a>
</div>
```

#### **W pliku `templates/registration/index.html`:**
```html
<!-- Usuń komentarz z tej sekcji: -->
<div class="divider">
<span>{% trans 'or' %}</span>
</div>

<div class="social-login">
<a href="/accounts/google/login/" class="btn btn-google">
<!-- SVG Google logo -->
{% trans 'Continue with Google' %}
</a>
</div>
```

### 3. **Testuj Google Login**
- Przejdź do http://127.0.0.1:8000/login
- Kliknij "Continue with Google"
- Sprawdź czy przekierowanie do Google działa

## 🎯 **Co działa teraz:**
- ✅ Standardowe logowanie/rejestracja
- ✅ Email 2FA (pełna funkcjonalność)
- ✅ Panel bezpieczeństwa `/security`
- ✅ API endpoints dla 2FA

## ⏳ **Co wymaga konfiguracji:**
- 🔧 Google OAuth (tymczasowo wyłączony)
- 📧 Prawdziwy SMTP dla emaili (obecnie console backend)

## 📋 **Szybka lista kontrolna:**
- [ ] Google Cloud Console projekt utworzony
- [ ] OAuth 2.0 Client ID skonfigurowany
- [ ] Redirect URI: `http://127.0.0.1:8000/accounts/google/login/callback/`
- [ ] Client ID i Secret zaktualizowane w Django Admin
- [ ] Przyciski Google Login odkomentowane w szablonach
- [ ] Test Google Login wykonany

---

**Google Login jest gotowy do włączenia po konfiguracji prawdziwych kluczy!** 🚀



90 changes: 90 additions & 0 deletions work_project/django_app/coworking/GOOGLE_OAUTH_INSTRUCTIONS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# 🚀 Instrukcje konfiguracji Google OAuth

## ✅ **Co zostało zrobione:**
- Google OAuth jest skonfigurowany z placeholder wartościami
- Przycisk "Continue with Google" jest widoczny na stronach logowania i rejestracji
- Django Admin jest gotowy do konfiguracji

## 🔧 **Aby Google Login działał, wykonaj te kroki:**

### 1. **Przejdź do Google Cloud Console**
👉 https://console.cloud.google.com/

### 2. **Utwórz projekt (lub wybierz istniejący)**
- Kliknij "New Project"
- Wpisz nazwę: "Coworking App"
- Kliknij "Create"

### 3. **Włącz Google+ API**
- W menu po lewej: "APIs & Services" > "Library"
- Wyszukaj "Google+ API"
- Kliknij "Enable"

### 4. **Utwórz OAuth 2.0 Client ID**
- Przejdź do "APIs & Services" > "Credentials"
- Kliknij "Create Credentials" > "OAuth 2.0 Client ID"
- Wybierz "Web application"
- Wpisz nazwę: "Coworking App OAuth"
- W "Authorized redirect URIs" dodaj:
```
http://127.0.0.1:8000/accounts/google/login/callback/
```
- Kliknij "Create"

### 5. **Skopiuj Client ID i Client Secret**
- Po utworzeniu zobaczysz okno z danymi
- Skopiuj **Client ID** i **Client Secret**

### 6. **Zaktualizuj konfigurację w Django Admin**
👉 Przejdź do: http://127.0.0.1:8000/admin/socialaccount/socialapp/

- Kliknij na "Google" (lub utwórz nowy jeśli nie istnieje)
- Wpisz:
- **Name**: `Google`
- **Provider**: `Google`
- **Client id**: `[Twój Client ID z Google]`
- **Secret key**: `[Twój Client Secret z Google]`
- **Sites**: Wybierz `127.0.0.1:8000`
- Kliknij "Save"

### 7. **Przetestuj Google Login**
- Przejdź do: http://127.0.0.1:8000/login
- Kliknij "Continue with Google"
- Powinieneś zostać przekierowany do Google

## 🔍 **Dostęp do Django Admin:**
- **URL**: http://127.0.0.1:8000/admin
- **Login**: `[email protected]`
- **Hasło**: (nie ustawione)

### Aby ustawić hasło dla admin:
```bash
python manage.py shell
>>> from django.contrib.auth import get_user_model
>>> User = get_user_model()
>>> admin = User.objects.get(email='[email protected]')
>>> admin.set_password('twoje_haslo')
>>> admin.save()
```

## 🎯 **Co teraz działa:**
- ✅ Przycisk Google Login jest widoczny
- ✅ Strona nie pokazuje błędu 500
- ✅ Gotowe do konfiguracji prawdziwych kluczy

## ⚠️ **Obecny stan:**
- Przycisk Google Login przekieruje do Google
- Ale Google pokaże błąd "Invalid client"
- To normalne - dopóki nie skonfigurujesz prawdziwych kluczy

## 🎉 **Po konfiguracji:**
- Użytkownicy będą mogli logować się przez Google
- Automatyczne tworzenie kont użytkowników
- Dostęp do profilu Google (email, imię, zdjęcie)

---

**Gotowe! Teraz możesz skonfigurować prawdziwe klucze Google OAuth.** 🚀



104 changes: 104 additions & 0 deletions work_project/django_app/coworking/GOOGLE_OAUTH_SETUP.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
# Konfiguracja Google OAuth

## Krok 1: Utworzenie projektu w Google Cloud Console

1. Przejdź do [Google Cloud Console](https://console.cloud.google.com/)
2. Utwórz nowy projekt lub wybierz istniejący
3. Włącz Google+ API i Google OAuth2 API

## Krok 2: Konfiguracja OAuth 2.0

1. Przejdź do **APIs & Services** > **Credentials**
2. Kliknij **Create Credentials** > **OAuth 2.0 Client IDs**
3. Wybierz **Web application**
4. Dodaj **Authorized redirect URIs**:
```
http://127.0.0.1:8000/accounts/google/login/callback/
http://localhost:8000/accounts/google/login/callback/
https://yourdomain.com/accounts/google/login/callback/
```

## Krok 3: Konfiguracja zmiennych środowiskowych

Dodaj do pliku `.env` lub ustaw jako zmienne środowiskowe:

```bash
# Google OAuth
GOOGLE_OAUTH2_CLIENT_ID=your_client_id_here
GOOGLE_OAUTH2_SECRET=your_client_secret_here

# Email configuration (for 2FA)
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USE_TLS=True
[email protected]
EMAIL_HOST_PASSWORD=your_app_password
[email protected]
```

## Krok 4: Aktualizacja ustawień Django

Dodaj do `settings.py`:

```python
# Google OAuth Configuration
SOCIALACCOUNT_PROVIDERS = {
'google': {
'SCOPE': [
'profile',
'email',
],
'AUTH_PARAMS': {
'access_type': 'online',
},
'OAUTH_PKCE_ENABLED': True,
}
}

# Social account settings
SOCIALACCOUNT_AUTO_SIGNUP = True
SOCIALACCOUNT_EMAIL_REQUIRED = True
SOCIALACCOUNT_EMAIL_VERIFICATION = 'mandatory'
```

## Krok 5: Migracje i instalacja

```bash
# Zainstaluj nowe pakiety
pip install -r requirements.txt

# Wykonaj migracje
python manage.py makemigrations
python manage.py migrate

# Utwórz superużytkownika (jeśli nie istnieje)
python manage.py createsuperuser
```

## Krok 6: Konfiguracja w Django Admin

1. Przejdź do `/admin/`
2. W sekcji **Sites** ustaw prawidłową domenę
3. W sekcji **Social Applications** dodaj Google:
- **Provider**: Google
- **Name**: Google
- **Client id**: Twój Client ID z Google Console
- **Secret key**: Twój Client Secret z Google Console
- **Sites**: Wybierz swoją domenę

## Testowanie

1. Uruchom serwer: `python manage.py runserver`
2. Przejdź do `/login`
3. Kliknij "Continue with Google"
4. Sprawdź czy logowanie działa

## Uwagi bezpieczeństwa

- Nigdy nie commituj Client Secret do repozytorium
- Użyj zmiennych środowiskowych dla wrażliwych danych
- W produkcji używaj HTTPS
- Regularnie rotuj klucze API



Loading