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
18 changes: 18 additions & 0 deletions file/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
47 changes: 47 additions & 0 deletions file/django_app/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Python cache / build artefacts
__pycache__/
*.py[cod]
*.pyo
*.so
*.egg-info/
.Python

# Virtual environments
venv/
ENV/
.env*/
*.venv
coworking/venv/

# Environment & secrets
.env
.env.local
.env.production
.env.backup
*.pem

# Django / project artefacts
db.sqlite3
*.sqlite3
staticfiles/
media/
logs/
*.log

# IDE / tooling
.idea/
.vscode/
.pytest_cache/
.mypy_cache/
.ruff_cache/
.coverage
coverage.xml
*.pid

# OS files
.DS_Store
Thumbs.db
ehthumbs.db



23 changes: 23 additions & 0 deletions file/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 file/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!** 🚀



103 changes: 103 additions & 0 deletions file/django_app/coworking/GETTEXT_WINDOWS_SETUP.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
# Instalacja GNU gettext na Windows

## Problem

Podczas uruchamiania komendy `python manage.py compilemessages` na Windows możesz otrzymać błąd:

```
CommandError: Can't find msgfmt. Make sure you have GNU gettext tools 0.19 or newer installed.
```

Dzieje się tak, ponieważ Django potrzebuje narzędzi GNU gettext do kompilacji plików tłumaczeń (`.po` → `.mo`), a na Windows nie są one domyślnie zainstalowane.

## Rozwiązanie

### Opcja 1: Instalacja przez Chocolatey (Zalecane)

1. **Zainstaluj Chocolatey** (jeśli jeszcze nie masz):
- Otwórz PowerShell jako Administrator
- Uruchom:
```powershell
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
```

2. **Zainstaluj gettext**:
```powershell
choco install gettext
```

3. **Dodaj do PATH** (jeśli nie zostało dodane automatycznie):
- Sprawdź czy `C:\ProgramData\chocolatey\lib\gettext\tools\bin` jest w PATH
- Jeśli nie, dodaj ręcznie w ustawieniach systemowych

4. **Zweryfikuj instalację**:
```powershell
msgfmt --version
```

5. **Uruchom ponownie kompilację**:
```bash
python manage.py compilemessages
```

### Opcja 2: Instalacja ręczna

1. **Pobierz gettext dla Windows**:
- Pobierz z: https://mlocati.github.io/articles/gettext-iconv-windows.html
- Lub użyj bezpośredniego linku: https://github.com/mlocati/gettext-iconv-windows/releases

2. **Rozpakuj archiwum** (np. do `C:\gettext`)

3. **Dodaj do PATH**:
- Otwórz "Zmienne środowiskowe" w Windows
- Dodaj `C:\gettext\bin` do zmiennej PATH
- Uruchom ponownie terminal

4. **Zweryfikuj instalację**:
```powershell
msgfmt --version
```

5. **Uruchom ponownie kompilację**:
```bash
python manage.py compilemessages
```

### Opcja 3: Użycie gotowych plików .mo (Tymczasowe rozwiązanie)

Jeśli nie możesz zainstalować gettext, możesz użyć już skompilowanych plików `.mo` z repozytorium:

1. Pliki `.mo` są już w repozytorium w folderze `locale/`
2. Jeśli są aktualne, możesz pominąć kompilację
3. **UWAGA**: Jeśli pliki `.po` zostały zaktualizowane, pliki `.mo` również muszą być zaktualizowane

## Weryfikacja

Po instalacji sprawdź czy wszystko działa:

```bash
# Sprawdź wersję gettext
msgfmt --version

# Skompiluj tłumaczenia
python manage.py compilemessages

# Sprawdź czy pliki .mo zostały zaktualizowane
python manage.py compilemessages -v 2
```

## Dodatkowe informacje

- **msgfmt** to narzędzie do kompilacji plików `.po` do `.mo`
- Pliki `.mo` są binarną wersją tłumaczeń używanych przez Django w runtime
- Po każdej zmianie w plikach `.po` należy uruchomić `compilemessages`

## Problemy?

Jeśli nadal masz problemy:

1. **Sprawdź PATH**: Upewnij się, że folder z `msgfmt.exe` jest w PATH
2. **Restart terminala**: Po zmianie PATH zamknij i otwórz terminal ponownie
3. **Sprawdź wersję**: `msgfmt --version` powinno pokazać wersję 0.19 lub nowszą
4. **Alternatywnie**: Użyj WSL (Windows Subsystem for Linux) i zainstaluj gettext w środowisku Linux

90 changes: 90 additions & 0 deletions file/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.** 🚀



Loading