mirror of
https://github.com/bellingcat/auto-archiver-api.git
synced 2026-06-08 03:28:35 +03:00
user-groups explained
This commit is contained in:
22
README.md
22
README.md
@@ -18,6 +18,28 @@ cd /src
|
|||||||
orchestration must be from the console(?)
|
orchestration must be from the console(?)
|
||||||
* turn off VPNs if connection to docker is not working
|
* turn off VPNs if connection to docker is not working
|
||||||
|
|
||||||
|
## User management
|
||||||
|
Copy [example.user-groups.yaml](src/example.user-groups.yaml) into a new file and set the environment variable `USER_GROUPS_FILENAME` to that filename (defaults to `user-groups.yaml`).
|
||||||
|
|
||||||
|
This file contains 2 parts user-groups specifications. Each user can archive URLs publicly, privately, or privately for a group so long as they are declared as part of that group. In the example bellow `email1` has 2 groups while `email3` has none.
|
||||||
|
```yaml
|
||||||
|
users:
|
||||||
|
email1@example.com:
|
||||||
|
- group1
|
||||||
|
- group2
|
||||||
|
email2@example.com:
|
||||||
|
- group2
|
||||||
|
email3@example-no-group.com:
|
||||||
|
```
|
||||||
|
|
||||||
|
Auto-archiver orchestrator files configurations. For each archiving task an orchestrator is chosen, either from a specified group (if group-level visibility) or the first group the user is assigned to in the above file or the `default` orchestration file which is a required config.
|
||||||
|
```yaml
|
||||||
|
orchestrators:
|
||||||
|
group1: secrets/orchestration-group1.yaml
|
||||||
|
group2: secrets/orchestration-group2.yaml
|
||||||
|
default: secrets/orchestration-default:.yaml
|
||||||
|
```
|
||||||
|
|
||||||
## Database migrations
|
## Database migrations
|
||||||
check https://alembic.sqlalchemy.org/en/latest/tutorial.html#the-migration-environment
|
check https://alembic.sqlalchemy.org/en/latest/tutorial.html#the-migration-environment
|
||||||
|
|
||||||
|
|||||||
@@ -4,4 +4,5 @@ ALLOWED_EMAILS=email1,email2
|
|||||||
ORCHESTRATION_CONFIG_DEFAULT=secrets/orchestration.yaml
|
ORCHESTRATION_CONFIG_DEFAULT=secrets/orchestration.yaml
|
||||||
# optional
|
# optional
|
||||||
# ORCHESTRATION_CONFIG_BELLINGCAT=secrets/orchestration-bcat.yaml
|
# ORCHESTRATION_CONFIG_BELLINGCAT=secrets/orchestration-bcat.yaml
|
||||||
DATABASE_PATH="sqlite:///./auto-archiver.db"
|
DATABASE_PATH="sqlite:///./auto-archiver.db"
|
||||||
|
USER_GROUPS_FILENAME=user-groups.yaml
|
||||||
@@ -4,4 +4,10 @@ users:
|
|||||||
- group2
|
- group2
|
||||||
email2@example.com:
|
email2@example.com:
|
||||||
- group2
|
- group2
|
||||||
email3@example-no-group.com:
|
email3@example-no-group.com:
|
||||||
|
|
||||||
|
|
||||||
|
orchestrators:
|
||||||
|
group1: secrets/orchestration-group1.yaml
|
||||||
|
group2: secrets/orchestration-group2.yaml
|
||||||
|
default: secrets/orchestration-default:.yaml
|
||||||
@@ -21,7 +21,7 @@ load_dotenv()
|
|||||||
|
|
||||||
# Configuration
|
# Configuration
|
||||||
ALLOWED_ORIGINS = os.environ.get("ALLOWED_ORIGINS", "chrome-extension://ondkcheoicfckabcnkdgbepofpjmjcmb,chrome-extension://ojcimmjndnlmmlgnjaeojoebaceokpdp").split(",")
|
ALLOWED_ORIGINS = os.environ.get("ALLOWED_ORIGINS", "chrome-extension://ondkcheoicfckabcnkdgbepofpjmjcmb,chrome-extension://ojcimmjndnlmmlgnjaeojoebaceokpdp").split(",")
|
||||||
VERSION = "0.3.1"
|
VERSION = "0.4.0"
|
||||||
# min-version refers to the version of auto-archiver-extension on the webstore
|
# min-version refers to the version of auto-archiver-extension on the webstore
|
||||||
BREAKING_CHANGES = {"minVersion": "0.3.0", "message": "The latest update has breaking changes, please update the extension to the most recent version."}
|
BREAKING_CHANGES = {"minVersion": "0.3.0", "message": "The latest update has breaking changes, please update the extension to the most recent version."}
|
||||||
|
|
||||||
@@ -160,4 +160,5 @@ async def on_startup():
|
|||||||
@repeat_every(seconds=60 * 60) # 1 hour
|
@repeat_every(seconds=60 * 60) # 1 hour
|
||||||
async def on_startup():
|
async def on_startup():
|
||||||
db: Session = next(get_db())
|
db: Session = next(get_db())
|
||||||
crud.upsert_user_groups(db, "user-groups.yaml")
|
USER_GROUPS_FILENAME=os.environ.get("USER_GROUPS_FILENAME", "user-groups.yaml")
|
||||||
|
crud.upsert_user_groups(db, USER_GROUPS_FILENAME)
|
||||||
Reference in New Issue
Block a user