Merge branch 'auto-claude/003-artur-bedzie-posiadal-pelne-prawa-administratora-p'
This commit is contained in:
commit
d4911fd82c
@ -0,0 +1,41 @@
|
||||
# Build Progress: Admin Rights for Artur Wiertel
|
||||
|
||||
## Status: READY FOR DEPLOYMENT
|
||||
|
||||
### Completed Tasks
|
||||
|
||||
- [x] **subtask-1-1**: Created migration script `grant_admin_artur_wiertel.py`
|
||||
- Script finds user by company_id=12 (WATERM)
|
||||
- Sets is_admin=True
|
||||
- Supports --dry-run for verification
|
||||
- Safe rollback on errors
|
||||
|
||||
### Deployment Instructions
|
||||
|
||||
1. SSH to production server:
|
||||
```bash
|
||||
ssh maciejpi@10.22.68.249
|
||||
```
|
||||
|
||||
2. Copy script to production:
|
||||
```bash
|
||||
scp grant_admin_artur_wiertel.py maciejpi@10.22.68.249:/var/www/nordabiznes/
|
||||
```
|
||||
|
||||
3. Run script (dry-run first):
|
||||
```bash
|
||||
cd /var/www/nordabiznes
|
||||
sudo -u www-data ./venv/bin/python3 grant_admin_artur_wiertel.py --dry-run
|
||||
```
|
||||
|
||||
4. If dry-run looks correct, execute:
|
||||
```bash
|
||||
sudo -u www-data ./venv/bin/python3 grant_admin_artur_wiertel.py
|
||||
```
|
||||
|
||||
### Manual Verification
|
||||
|
||||
After running the script:
|
||||
1. Ask Artur Wiertel to log in at https://nordabiznes.pl/login
|
||||
2. Verify he can access /admin/news panel
|
||||
3. Verify he can moderate news items
|
||||
@ -0,0 +1,41 @@
|
||||
{
|
||||
"feature": "admin-rights-artur-wiertel",
|
||||
"workflow_type": "simple",
|
||||
"total_phases": 1,
|
||||
"recommended_workers": 1,
|
||||
"phases": [
|
||||
{
|
||||
"phase": 1,
|
||||
"name": "Grant Admin Privileges",
|
||||
"description": "Set is_admin=True for Artur Wiertel's user account",
|
||||
"depends_on": [],
|
||||
"subtasks": [
|
||||
{
|
||||
"id": "subtask-1-1",
|
||||
"description": "Update user record to set is_admin=True for Artur Wiertel (WATERM owner, company_id=12)",
|
||||
"service": "database",
|
||||
"status": "completed",
|
||||
"files_to_create": [],
|
||||
"files_to_modify": [],
|
||||
"database_changes": [
|
||||
"UPDATE users SET is_admin = TRUE WHERE company_id = 12"
|
||||
],
|
||||
"patterns_from": [],
|
||||
"verification": {
|
||||
"type": "manual",
|
||||
"run": "Login as Artur Wiertel and verify access to /admin/news"
|
||||
},
|
||||
"notes": "Created grant_admin_artur_wiertel.py script that safely updates is_admin=True for WATERM owner (company_id=12). Script supports --dry-run mode and includes error handling.",
|
||||
"updated_at": "2026-01-06T20:58:16.509339+00:00"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"created_at": "2026-01-06",
|
||||
"complexity": "simple",
|
||||
"estimated_sessions": 1,
|
||||
"notes": "Database-only change, no code modifications needed"
|
||||
},
|
||||
"last_updated": "2026-01-06T20:58:16.509348+00:00"
|
||||
}
|
||||
98
grant_admin_artur_wiertel.py
Normal file
98
grant_admin_artur_wiertel.py
Normal file
@ -0,0 +1,98 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Grant admin rights to Artur Wiertel (WATERM owner, company_id=12)
|
||||
|
||||
This script updates the is_admin field to True for the user associated
|
||||
with WATERM company.
|
||||
|
||||
Usage:
|
||||
python grant_admin_artur_wiertel.py [--dry-run]
|
||||
|
||||
Options:
|
||||
--dry-run Show what would be changed without making changes
|
||||
"""
|
||||
|
||||
import sys
|
||||
from database import SessionLocal, User, Company
|
||||
|
||||
|
||||
def grant_admin_to_waterm_owner(dry_run=False):
|
||||
"""Grant admin rights to WATERM owner (company_id=12)"""
|
||||
|
||||
session = SessionLocal()
|
||||
|
||||
try:
|
||||
# First, verify the company exists
|
||||
company = session.query(Company).filter(Company.id == 12).first()
|
||||
if not company:
|
||||
print("❌ Error: Company with id=12 not found")
|
||||
return False
|
||||
|
||||
print(f"✅ Found company: {company.name} (NIP: {company.nip})")
|
||||
|
||||
# Find the user associated with this company
|
||||
user = session.query(User).filter(User.company_id == 12).first()
|
||||
|
||||
if not user:
|
||||
print(f"❌ Error: No user found for company_id=12 ({company.name})")
|
||||
print(" Please ensure the user account exists before granting admin rights.")
|
||||
return False
|
||||
|
||||
print(f"✅ Found user: {user.name} ({user.email})")
|
||||
print(f" Current admin status: {user.is_admin}")
|
||||
|
||||
if user.is_admin:
|
||||
print("ℹ️ User already has admin rights. No changes needed.")
|
||||
return True
|
||||
|
||||
if dry_run:
|
||||
print("\n[DRY RUN] Would set is_admin=True for this user")
|
||||
print("[DRY RUN] No changes made to database")
|
||||
return True
|
||||
|
||||
# Grant admin rights
|
||||
user.is_admin = True
|
||||
session.commit()
|
||||
|
||||
print(f"\n✅ Successfully granted admin rights to {user.name}")
|
||||
print(f" Email: {user.email}")
|
||||
print(f" Company: {company.name}")
|
||||
print(f" Admin status: {user.is_admin}")
|
||||
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
session.rollback()
|
||||
print(f"❌ Error: {e}")
|
||||
return False
|
||||
|
||||
finally:
|
||||
session.close()
|
||||
|
||||
|
||||
def main():
|
||||
dry_run = '--dry-run' in sys.argv
|
||||
|
||||
print("=" * 60)
|
||||
print("Grant Admin Rights - Artur Wiertel (WATERM)")
|
||||
print("=" * 60)
|
||||
|
||||
if dry_run:
|
||||
print("\n🔍 DRY RUN MODE - No changes will be made\n")
|
||||
|
||||
success = grant_admin_to_waterm_owner(dry_run=dry_run)
|
||||
|
||||
if success:
|
||||
print("\n✅ Operation completed successfully")
|
||||
if not dry_run:
|
||||
print("\nNext steps:")
|
||||
print("1. Ask Artur to log in at https://nordabiznes.pl/login")
|
||||
print("2. Verify access to /admin/news panel")
|
||||
return 0
|
||||
else:
|
||||
print("\n❌ Operation failed")
|
||||
return 1
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main())
|
||||
Loading…
Reference in New Issue
Block a user