Skip to content

Commit 378f96c

Browse files
feat: add CORS support
1 parent 23c6c90 commit 378f96c

File tree

5 files changed

+31
-16
lines changed

5 files changed

+31
-16
lines changed

.env.example

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
# Please provided relative paths with ./ or things can break :)
22

3-
SESSION_DIR="./data/flask_sessions/"
4-
SESSION_LIFETIME="3600"
3+
SESSION_DIR="data/flask_sessions/"
4+
SESSION_LIFETIME="10800" # 3 hours
55

6-
DATABASE_PATH="./data/hackerschool.sqlite3"
7-
ROLES_PATH="./data/roles.json"
8-
PHOTOS_DIR="./data/photos/"
6+
DATABASE_PATH="data/hackerschool.sqlite3"
7+
ROLES_PATH="data/roles.json"
8+
PHOTOS_DIR="data/photos/"
9+
MAX_FILE_UPLOAD_LENGTH="16777216" # 16 MiB
910

1011
LOG_LEVEL="INFO"
11-
LOGS_PATH="./data/logs/app.log"
12+
LOGS_PATH="data/logs/app.log"
1213

1314
ADMIN_USERNAME="admin"
1415
ADMIN_PASSWORD="admin"
16+
17+
FRONTEND_URI="http://localhost:3000"

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ source .venv/bin/activate
5252
pip install -r requirements.txt
5353
```
5454
4. **Setup environment variables**: Create a `.env` file and add any necessary environment variables (see [Environment Variables](#environment-variables) section).
55+
5556
5. **Setup the database and create an admin user**:
5657
```bash
5758
flask init-db
@@ -64,7 +65,9 @@ flask run --debug
6465

6566

6667
### Docker Setup (Optional)
67-
1. **Create all application-data folders**: `docker compose` will mount the database and required folders into the container. For this you need to initialize the database, please refer to the [installation steps 1 to 5](#installation) to set this up.
68+
1. **Create all application-data folders**:
69+
`docker compose` will mount the database and required folders into the container. For this you need to initialize the database, please refer to the [installation steps 1 to 5](#installation) to set this up.
70+
6871
1. **Build the docker image**:
6972
```bash
7073
docker compose build

app/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import logging
33

44
from flask import Flask
5+
from flask_cors import CORS
56

67
from app.config import Config
78
from app.extensions import session
@@ -23,6 +24,9 @@ def create_app(config_class=Config):
2324
register_error_handlers(flask_app)
2425
register_commands(flask_app)
2526

27+
if (frontend_uri := flask_app.config.get("FRONTEND_URI", "")) != "":
28+
CORS(flask_app, origins=[frontend_uri], supports_credentials=True)
29+
2630
setup_logger(flask_app)
2731

2832
return flask_app

app/config.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,20 +27,23 @@ class Config:
2727
SESSION_TYPE = "filesystem"
2828
PERMANENT_SESSION = True
2929
SESSION_REFRESH_EACH_REQUEST = False
30-
PERMANENT_SESSION_LIFETIME = _get_int_env_or_default("SESSION_LIFETIME", 12 * 60 * 60)
31-
SESSION_KEY_PREFIX = _get_env_or_default("SESSION_KEY_PREFIX", "hs_session_")
32-
SESSION_FILE_DIR = os.path.join(basedir, _get_env_or_default("SESSION_DIR", "data/flask_sessions/")).rstrip("/")
30+
SESSION_KEY_PREFIX = "hs_session_"
3331

34-
ROLES_PATH = os.path.join(basedir, _get_env_or_default("ROLES_PATH", "data/roles.json"))
32+
PERMANENT_SESSION_LIFETIME = _get_int_env_or_default("SESSION_LIFETIME", 3 * 60 * 60)
33+
SESSION_FILE_DIR = os.path.join(basedir, _get_env_or_default("SESSION_DIR", "data/flask_sessions/")).rstrip("/")
3534

3635
DATABASE_PATH = os.path.join(basedir, _get_env_or_default("DATABASE_PATH", "data/hackerschool.sqlite3"))
3736
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + DATABASE_PATH
3837

38+
ROLES_PATH = os.path.join(basedir, _get_env_or_default("ROLES_PATH", "data/roles.json"))
39+
3940
PHOTOS_DIR = os.path.join(basedir, _get_env_or_default("PHOTOS_DIR", "data/photos/")).rstrip("/")
40-
MAX_CONTENT_LENGTH = _get_int_env_or_default("MAX_PHOTO_SIZE", 16 * 1000 * 1000) ## max pohto size
41+
MAX_CONTENT_LENGTH = _get_int_env_or_default("MAX_FILE_UPLOAD_LENGTH", 16 * 1024 * 1024)
4142

4243
LOGS_PATH = os.path.join(basedir, _get_env_or_default("LOGS_PATH", ""))
4344
LOG_LEVEL = _get_env_or_default("LOG_LEVEL", "INFO")
4445

45-
ADMIN_USERNAME = _get_env_or_default("ADMIN_USERNAME", "")
46-
ADMIN_PASSWORD = _get_env_or_default("ADMIN_PASSWORD", "")
46+
FRONTEND_URI = _get_env_or_default("FRONTEND_URI", "http://localhost:3000")
47+
48+
ADMIN_USERNAME = _get_env_or_default("ADMIN_USERNAME", "admin")
49+
ADMIN_PASSWORD = _get_env_or_default("ADMIN_PASSWORD", "admin")

docker-compose.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ services:
1515
- SESSION_DIR=/hs-api/data/flask_sessions/
1616
- PHOTOS_DIR=/hs-api/data/photos/
1717
- LOGS_PATH=/hs-api/data/logs/app.log
18-
- LOG_LEVEL=INFO
19-
- SESSION_LIFETIME=10800
18+
- LOG_LEVEL=${LOG_LEVEL}
19+
- SESSION_LIFETIME=${SESSION_LIFETIME}
20+
- MAX_FILE_UPLOAD_LENGTH=${MAX_FILE_UPLOAD_LENGTH}
21+
- FRONTEND_URI=${FRONTEND_URI}
2022

0 commit comments

Comments
 (0)