diff --git a/fix_permissions.sh b/fix_permissions.sh index e7fd62d..dccb6cd 100755 --- a/fix_permissions.sh +++ b/fix_permissions.sh @@ -41,27 +41,36 @@ for service in services: changed = False - # Ensure bridge.permissions structure exists + # Ensure bridge.permissions structure exists and is a dict if 'bridge' not in data: data['bridge'] = {} - if 'permissions' not in data['bridge'] or data['bridge']['permissions'] is None: + if 'permissions' not in data['bridge'] or not isinstance(data['bridge']['permissions'], dict): data['bridge']['permissions'] = {} changed = True perms = data['bridge']['permissions'] - # Add admin user if missing - if admin_user not in perms: + # Force set permissions to ensure they are present + # We use string keys explicitly + + # 1. Admin User + if str(admin_user) not in perms: perms[str(admin_user)] = "admin" changed = True print(f" - Added admin permission for {admin_user}") - - # Add beeper.local domain permission + + # 2. Domain Permission if 'beeper.local' not in perms: perms['beeper.local'] = "user" changed = True - print(f" - Added basic permission for beeper.local domain") + print(f" - Added permission for beeper.local") + + # 3. Wildcard Fallback (safety net) + if '*' not in perms: + perms['*'] = "user" + changed = True + print(f" - Added wildcard (*) permission") if changed: with open(config_path, 'w') as f: