Live demo: https://access-guard.onrender.com/docs
AccessGuard to system RBAC (Role-Based Access Control) napisany w Pythonie z FastAPI.
Pozwala na:
- Rejestrację i logowanie użytkowników z JWT
- Tworzenie ról i przypisywanie uprawnień
- Sprawdzanie dostępu użytkowników do zasobów
- Deployment w Dockerze (lokalnie i w chmurze)
Projekt jest produkcyjnie przygotowany, a jego demo działa w Render.com.
- Rejestracja użytkowników (
/auth/register) - Logowanie (
/auth/login) → JWT - Role i uprawnienia:
- Tworzenie ról i uprawnień
- Przypisywanie ról użytkownikom
- Sprawdzanie dostępu użytkowników (
/permissions/check)
- Swagger UI i Redoc:
/docs→ Swagger (interaktywne testowanie)/redoc→ alternatywna dokumentacja
- Python 3.11
- FastAPI – framework API
- SQLAlchemy – ORM
- SQLite (demo) / przygotowane pod Postgresa
- Docker + docker-compose
- Render.com – hosting darmowy, live demo
- Pytest + pytest-asyncio – testy integracyjne
Można stworzyć testowych użytkowników i zalogować się, aby sprawdzić role i permissions.
- POST/auth/register
{
"username": "alice",
"password": "secret"
}- POST/auth/login
{
"username": "alice",
"password": "secret"
}skopiuj token w odpowiedzi i wklej do przycisku Authorize (UWAGA! jest config bez wpisywania Bearer)
- POST/permissions/create
{
"resource": "door1",
"action": "open",
"role_name": "guard"
}- POST/roles/assign
{
"username": "alice",
"role": "guard"
}- POST/permissions/check
{
"resource": "door1",
"action": "open"
}- Skopiuj repozytorium:
git clone <repo-url>
cd access-guard- Uruchom w Dockerze:
docker compose up --buildalbo
uvicorn app.main:app --reload- Otwórz Swagger:
http://localhost:8000/docs
- SECRET_KEY – losowy, długi string (JWT)
- PORT –
8000(Render wymaga) - PYTHONUNBUFFERED –
1(opcjonalnie dla logów)
Na Render.com SQLite zapisuje się w
/tmp/accessguard.dbProdukcyjnie można podmienić na Postgres lub inny DBMS przezDATABASE_URL.
Projekt zawiera testy integracyjne w tests/test_auth.py.
Uruchom:
pytestaccess-guard/
├── app/
│ ├── core/ # openapi, security, tags
│ ├── services/ # auth_service, permission_service
│ ├── main.py # FastAPI app + endpoints
│ ├── models.py # SQLAlchemy models
│ ├── schemas.py # Pydantic schemas
│ └── database.py # DB setup
├── tests/ # testy integracyjne
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
└── README.md
- Deployment w chmurze bez karty kredytowej (Render.com)
- Docker i docker-compose w praktyce
- JWT i RBAC w aplikacjach webowych
- Projektowanie API + Swagger UI
- Testy integracyjne + automatyzacja
