fix: support arbitrary production database passwords
This commit is contained in:
@@ -4,9 +4,21 @@ from pathlib import Path
|
||||
import psycopg
|
||||
from psycopg import sql
|
||||
|
||||
|
||||
def admin_connect():
|
||||
if os.environ.get('DATABASE_ADMIN_HOST'):
|
||||
return psycopg.connect(
|
||||
host=os.environ['DATABASE_ADMIN_HOST'],
|
||||
dbname=os.environ['DATABASE_ADMIN_NAME'],
|
||||
user=os.environ['DATABASE_ADMIN_USER'],
|
||||
password=os.environ['DATABASE_ADMIN_PASSWORD'],
|
||||
)
|
||||
return psycopg.connect(os.environ['DATABASE_ADMIN_URL'])
|
||||
|
||||
|
||||
def main():
|
||||
role = os.environ['APP_DB_USER']
|
||||
with psycopg.connect(os.environ['DATABASE_ADMIN_URL']) as c:
|
||||
with admin_connect() as c:
|
||||
admin, database = c.execute('SELECT current_user,current_database()').fetchone()
|
||||
if role == admin:
|
||||
raise RuntimeError('Application and database administrator must differ')
|
||||
|
||||
Reference in New Issue
Block a user