Repository files navigation

Database as a Service (DBaaS) API

Overview

DBaaS is a powerful RESTful API interface that allows you to interact with databases without writing a full backend. It maps HTTP methods to SQL operations with robust authentication and granular access control, providing a secure and flexible way to manage database operations through a standardized API.

Features

Database Operations

  • RESTful API: Maps HTTP methods to SQL operations
    • GET → SELECT SQL statements with support for filtering, sorting, and pagination
    • POST → INSERT SQL statements with validation and bulk insertion capabilities
    • PUT → UPDATE SQL statements with UPSERT functionality for create-or-update operations
    • DELETE → DELETE SQL statements with conditional deletion
  • Complex Queries: Support for complex WHERE conditions, JOINs, and aggregate functions
  • Data Export: Export table data to JSON or CSV formats

Security & Access Control

  • Authentication: API key-based authentication with 30-day expiration and refresh capabilities
  • Role-Based Access Control: Two-tier role system
    • Admin: Full system access with user management capabilities
    • User: Limited access based on explicitly granted permissions
  • Granular Permissions:
    • Table-specific permissions for precise access control
    • Operation-specific permissions (select, insert, update, delete)
    • Column-level restrictions to hide sensitive data
    • Row-level filtering with WHERE conditions for data isolation
  • Security: Input validation, query sanitization, prepared statements, and comprehensive error handling

Administration

  • CLI Tools: Comprehensive Artisan commands for administration
    • User management (add, remove, update, list)
    • Permission management with granular control
    • Table management (create, modify, delete, list, export, seed)
  • Interactive Mode: All commands support both interactive and non-interactive usage
  • Detailed Logging: Track all database operations with user attribution

Installation

Requirements

  • PHP 8.1 or higher
  • Composer
  • MySQL, PostgreSQL, or SQLite database
  • Web server (Apache, Nginx, etc.)

Step-by-Step Installation

  1. Clone the repository

    git clone https://github.com/AthenaNetworks/DBaaS.git
    cd DBaaS
  2. Install dependencies

    composer install
  3. Set up environment variables

    cp .env.example .env
    php artisan key:generate
  4. Configure your database connection in the .env file

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=dbaas
    DB_USERNAME=root
    DB_PASSWORD=
    
  5. Run migrations and seed the database

    php artisan migrate
    php artisan db:seed --class=UsersAndPermissionsSeeder
  6. Configure your web server

    For Apache, ensure the document root points to the /public directory.

    For Nginx, use a configuration similar to:

    server {
    listen 80;
    server_name dbaas.example.com;
    root /path/to/DBaaS/public;
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";
    index index.php;
    charset utf-8;
    location / {
    try_files $uri $uri/ /index.php?$query_string;
    }
    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt { access_log off; log_not_found off; }
    error_page 404 /index.php;
    location ~ \.php$ {
    fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
    include fastcgi_params;
    }
    location ~ /\.(?!well-known).* {
    deny all;
    }
    }
    
  7. Start the development server (for local development)

    php artisan serve

    Your API will be available at http://localhost:8000

User and Permission Management

User Management

DBaaS provides a powerful Artisan command for managing users without requiring API access:

php artisan dbaas:user {action?} [options]

Available actions:

  • add - Create a new user with name, email, password, and role
  • remove - Delete an existing user with confirmation
  • update - Modify user details including role and API key refresh
  • list - Display all users with their details (default)

Examples:

# Create an admin user
php artisan dbaas:user add --name="Admin User" --email="admin@example.com" --password="secure123" --role="admin"# Update a user's role and refresh their API key
php artisan dbaas:user update --id=1 --role="admin" --refresh-key
# List all users with their details
php artisan dbaas:user list

Permission Management

The granular permission system is managed through a dedicated Artisan command:

php artisan dbaas:permission {action?} [options]

Available actions:

  • grant - Grant permissions to a user with precise control
  • revoke - Remove permissions from a user
  • list - List all permissions with filtering options
  • show - Show detailed information about a specific permission

Examples:

# Grant a user permission to select and update records in a table
php artisan dbaas:permission grant --user=5 --table=customers --operations=select,update
# Grant permissions with column restrictions (hide sensitive data)
php artisan dbaas:permission grant --user=user@example.com --table=orders --operations=select,insert,update --columns-denied=credit_card_number,cvv
# Grant permissions with row-level filtering (user can only see their own records)
php artisan dbaas:permission grant --user=5 --table=orders --operations=select,update --where='[["user_id","=",5]]'

For more details on user and permission management, see the authentication documentation and permission management documentation.

Documentation

For detailed documentation on how to use the DBaaS API, including all available endpoints, request/response formats, and examples, please refer to the documentation index.

The documentation includes:

License

This project is licensed under the MIT License - see the LICENSE file for details.

This project is open-sourced software licensed under the MIT license.

About

Database as a (RESTful) Service

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Database as a Service (DBaaS) API

Overview

DBaaS is a powerful RESTful API interface that allows you to interact with databases without writing a full backend. It maps HTTP methods to SQL operations with robust authentication and granular access control, providing a secure and flexible way to manage database operations through a standardized API.

Features

Database Operations

  • RESTful API: Maps HTTP methods to SQL operations
    • GET → SELECT SQL statements with support for filtering, sorting, and pagination
    • POST → INSERT SQL statements with validation and bulk insertion capabilities
    • PUT → UPDATE SQL statements with UPSERT functionality for create-or-update operations
    • DELETE → DELETE SQL statements with conditional deletion
  • Complex Queries: Support for complex WHERE conditions, JOINs, and aggregate functions
  • Data Export: Export table data to JSON or CSV formats

Security & Access Control

  • Authentication: API key-based authentication with 30-day expiration and refresh capabilities
  • Role-Based Access Control: Two-tier role system
    • Admin: Full system access with user management capabilities
    • User: Limited access based on explicitly granted permissions
  • Granular Permissions:
    • Table-specific permissions for precise access control
    • Operation-specific permissions (select, insert, update, delete)
    • Column-level restrictions to hide sensitive data
    • Row-level filtering with WHERE conditions for data isolation
  • Security: Input validation, query sanitization, prepared statements, and comprehensive error handling

Administration

  • CLI Tools: Comprehensive Artisan commands for administration
    • User management (add, remove, update, list)
    • Permission management with granular control
    • Table management (create, modify, delete, list, export, seed)
  • Interactive Mode: All commands support both interactive and non-interactive usage
  • Detailed Logging: Track all database operations with user attribution

Installation

Requirements

  • PHP 8.1 or higher
  • Composer
  • MySQL, PostgreSQL, or SQLite database
  • Web server (Apache, Nginx, etc.)

Step-by-Step Installation

  1. Clone the repository

    git clone https://github.com/AthenaNetworks/DBaaS.git
    cd DBaaS
  2. Install dependencies

    composer install
  3. Set up environment variables

    cp .env.example .env
    php artisan key:generate
  4. Configure your database connection in the .env file

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=dbaas
    DB_USERNAME=root
    DB_PASSWORD=
    
  5. Run migrations and seed the database

    php artisan migrate
    php artisan db:seed --class=UsersAndPermissionsSeeder
  6. Configure your web server

    For Apache, ensure the document root points to the /public directory.

    For Nginx, use a configuration similar to:

    server {
    listen 80;
    server_name dbaas.example.com;
    root /path/to/DBaaS/public;
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";
    index index.php;
    charset utf-8;
    location / {
    try_files $uri $uri/ /index.php?$query_string;
    }
    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt { access_log off; log_not_found off; }
    error_page 404 /index.php;
    location ~ \.php$ {
    fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
    include fastcgi_params;
    }
    location ~ /\.(?!well-known).* {
    deny all;
    }
    }
    
  7. Start the development server (for local development)

    php artisan serve

    Your API will be available at http://localhost:8000

User and Permission Management

User Management

DBaaS provides a powerful Artisan command for managing users without requiring API access:

php artisan dbaas:user {action?} [options]

Available actions:

  • add - Create a new user with name, email, password, and role
  • remove - Delete an existing user with confirmation
  • update - Modify user details including role and API key refresh
  • list - Display all users with their details (default)

Examples:

# Create an admin user
php artisan dbaas:user add --name="Admin User" --email="admin@example.com" --password="secure123" --role="admin"# Update a user's role and refresh their API key
php artisan dbaas:user update --id=1 --role="admin" --refresh-key
# List all users with their details
php artisan dbaas:user list

Permission Management

The granular permission system is managed through a dedicated Artisan command:

php artisan dbaas:permission {action?} [options]

Available actions:

  • grant - Grant permissions to a user with precise control
  • revoke - Remove permissions from a user
  • list - List all permissions with filtering options
  • show - Show detailed information about a specific permission

Examples:

# Grant a user permission to select and update records in a table
php artisan dbaas:permission grant --user=5 --table=customers --operations=select,update
# Grant permissions with column restrictions (hide sensitive data)
php artisan dbaas:permission grant --user=user@example.com --table=orders --operations=select,insert,update --columns-denied=credit_card_number,cvv
# Grant permissions with row-level filtering (user can only see their own records)
php artisan dbaas:permission grant --user=5 --table=orders --operations=select,update --where='[["user_id","=",5]]'

For more details on user and permission management, see the authentication documentation and permission management documentation.

Documentation

For detailed documentation on how to use the DBaaS API, including all available endpoints, request/response formats, and examples, please refer to the documentation index.

The documentation includes:

License

This project is licensed under the MIT License - see the LICENSE file for details.

This project is open-sourced software licensed under the MIT license.

About

Database as a (RESTful) Service

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Database as a Service (DBaaS) API

Overview

DBaaS is a powerful RESTful API interface that allows you to interact with databases without writing a full backend. It maps HTTP methods to SQL operations with robust authentication and granular access control, providing a secure and flexible way to manage database operations through a standardized API.

Features

Database Operations

  • RESTful API: Maps HTTP methods to SQL operations
    • GET → SELECT SQL statements with support for filtering, sorting, and pagination
    • POST → INSERT SQL statements with validation and bulk insertion capabilities
    • PUT → UPDATE SQL statements with UPSERT functionality for create-or-update operations
    • DELETE → DELETE SQL statements with conditional deletion
  • Complex Queries: Support for complex WHERE conditions, JOINs, and aggregate functions
  • Data Export: Export table data to JSON or CSV formats

Security & Access Control

  • Authentication: API key-based authentication with 30-day expiration and refresh capabilities
  • Role-Based Access Control: Two-tier role system
    • Admin: Full system access with user management capabilities
    • User: Limited access based on explicitly granted permissions
  • Granular Permissions:
    • Table-specific permissions for precise access control
    • Operation-specific permissions (select, insert, update, delete)
    • Column-level restrictions to hide sensitive data
    • Row-level filtering with WHERE conditions for data isolation
  • Security: Input validation, query sanitization, prepared statements, and comprehensive error handling

Administration

  • CLI Tools: Comprehensive Artisan commands for administration
    • User management (add, remove, update, list)
    • Permission management with granular control
    • Table management (create, modify, delete, list, export, seed)
  • Interactive Mode: All commands support both interactive and non-interactive usage
  • Detailed Logging: Track all database operations with user attribution

Installation

Requirements

  • PHP 8.1 or higher
  • Composer
  • MySQL, PostgreSQL, or SQLite database
  • Web server (Apache, Nginx, etc.)

Step-by-Step Installation

  1. Clone the repository

    git clone https://github.com/AthenaNetworks/DBaaS.git
    cd DBaaS
  2. Install dependencies

    composer install
  3. Set up environment variables

    cp .env.example .env
    php artisan key:generate
  4. Configure your database connection in the .env file

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=dbaas
    DB_USERNAME=root
    DB_PASSWORD=
    
  5. Run migrations and seed the database

    php artisan migrate
    php artisan db:seed --class=UsersAndPermissionsSeeder
  6. Configure your web server

    For Apache, ensure the document root points to the /public directory.

    For Nginx, use a configuration similar to:

    server {
    listen 80;
    server_name dbaas.example.com;
    root /path/to/DBaaS/public;
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";
    index index.php;
    charset utf-8;
    location / {
    try_files $uri $uri/ /index.php?$query_string;
    }
    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt { access_log off; log_not_found off; }
    error_page 404 /index.php;
    location ~ \.php$ {
    fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
    include fastcgi_params;
    }
    location ~ /\.(?!well-known).* {
    deny all;
    }
    }
    
  7. Start the development server (for local development)

    php artisan serve

    Your API will be available at http://localhost:8000

User and Permission Management

User Management

DBaaS provides a powerful Artisan command for managing users without requiring API access:

php artisan dbaas:user {action?} [options]

Available actions:

  • add - Create a new user with name, email, password, and role
  • remove - Delete an existing user with confirmation
  • update - Modify user details including role and API key refresh
  • list - Display all users with their details (default)

Examples:

# Create an admin user
php artisan dbaas:user add --name="Admin User" --email="admin@example.com" --password="secure123" --role="admin"# Update a user's role and refresh their API key
php artisan dbaas:user update --id=1 --role="admin" --refresh-key
# List all users with their details
php artisan dbaas:user list

Permission Management

The granular permission system is managed through a dedicated Artisan command:

php artisan dbaas:permission {action?} [options]

Available actions:

  • grant - Grant permissions to a user with precise control
  • revoke - Remove permissions from a user
  • list - List all permissions with filtering options
  • show - Show detailed information about a specific permission

Examples:

# Grant a user permission to select and update records in a table
php artisan dbaas:permission grant --user=5 --table=customers --operations=select,update
# Grant permissions with column restrictions (hide sensitive data)
php artisan dbaas:permission grant --user=user@example.com --table=orders --operations=select,insert,update --columns-denied=credit_card_number,cvv
# Grant permissions with row-level filtering (user can only see their own records)
php artisan dbaas:permission grant --user=5 --table=orders --operations=select,update --where='[["user_id","=",5]]'

For more details on user and permission management, see the authentication documentation and permission management documentation.

Documentation

For detailed documentation on how to use the DBaaS API, including all available endpoints, request/response formats, and examples, please refer to the documentation index.

The documentation includes:

License

This project is licensed under the MIT License - see the LICENSE file for details.

This project is open-sourced software licensed under the MIT license.

About

Database as a (RESTful) Service

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Database as a Service (DBaaS) API

Overview

DBaaS is a powerful RESTful API interface that allows you to interact with databases without writing a full backend. It maps HTTP methods to SQL operations with robust authentication and granular access control, providing a secure and flexible way to manage database operations through a standardized API.

Features

Database Operations

  • RESTful API: Maps HTTP methods to SQL operations
    • GET → SELECT SQL statements with support for filtering, sorting, and pagination
    • POST → INSERT SQL statements with validation and bulk insertion capabilities
    • PUT → UPDATE SQL statements with UPSERT functionality for create-or-update operations
    • DELETE → DELETE SQL statements with conditional deletion
  • Complex Queries: Support for complex WHERE conditions, JOINs, and aggregate functions
  • Data Export: Export table data to JSON or CSV formats

Security & Access Control

  • Authentication: API key-based authentication with 30-day expiration and refresh capabilities
  • Role-Based Access Control: Two-tier role system
    • Admin: Full system access with user management capabilities
    • User: Limited access based on explicitly granted permissions
  • Granular Permissions:
    • Table-specific permissions for precise access control
    • Operation-specific permissions (select, insert, update, delete)
    • Column-level restrictions to hide sensitive data
    • Row-level filtering with WHERE conditions for data isolation
  • Security: Input validation, query sanitization, prepared statements, and comprehensive error handling

Administration

  • CLI Tools: Comprehensive Artisan commands for administration
    • User management (add, remove, update, list)
    • Permission management with granular control
    • Table management (create, modify, delete, list, export, seed)
  • Interactive Mode: All commands support both interactive and non-interactive usage
  • Detailed Logging: Track all database operations with user attribution

Installation

Requirements

  • PHP 8.1 or higher
  • Composer
  • MySQL, PostgreSQL, or SQLite database
  • Web server (Apache, Nginx, etc.)

Step-by-Step Installation

  1. Clone the repository

    git clone https://github.com/AthenaNetworks/DBaaS.git
    cd DBaaS
  2. Install dependencies

    composer install
  3. Set up environment variables

    cp .env.example .env
    php artisan key:generate
  4. Configure your database connection in the .env file

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=dbaas
    DB_USERNAME=root
    DB_PASSWORD=
    
  5. Run migrations and seed the database

    php artisan migrate
    php artisan db:seed --class=UsersAndPermissionsSeeder
  6. Configure your web server

    For Apache, ensure the document root points to the /public directory.

    For Nginx, use a configuration similar to:

    server {
    listen 80;
    server_name dbaas.example.com;
    root /path/to/DBaaS/public;
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";
    index index.php;
    charset utf-8;
    location / {
    try_files $uri $uri/ /index.php?$query_string;
    }
    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt { access_log off; log_not_found off; }
    error_page 404 /index.php;
    location ~ \.php$ {
    fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
    include fastcgi_params;
    }
    location ~ /\.(?!well-known).* {
    deny all;
    }
    }
    
  7. Start the development server (for local development)

    php artisan serve

    Your API will be available at http://localhost:8000

User and Permission Management

User Management

DBaaS provides a powerful Artisan command for managing users without requiring API access:

php artisan dbaas:user {action?} [options]

Available actions:

  • add - Create a new user with name, email, password, and role
  • remove - Delete an existing user with confirmation
  • update - Modify user details including role and API key refresh
  • list - Display all users with their details (default)

Examples:

# Create an admin user
php artisan dbaas:user add --name="Admin User" --email="admin@example.com" --password="secure123" --role="admin"# Update a user's role and refresh their API key
php artisan dbaas:user update --id=1 --role="admin" --refresh-key
# List all users with their details
php artisan dbaas:user list

Permission Management

The granular permission system is managed through a dedicated Artisan command:

php artisan dbaas:permission {action?} [options]

Available actions:

  • grant - Grant permissions to a user with precise control
  • revoke - Remove permissions from a user
  • list - List all permissions with filtering options
  • show - Show detailed information about a specific permission

Examples:

# Grant a user permission to select and update records in a table
php artisan dbaas:permission grant --user=5 --table=customers --operations=select,update
# Grant permissions with column restrictions (hide sensitive data)
php artisan dbaas:permission grant --user=user@example.com --table=orders --operations=select,insert,update --columns-denied=credit_card_number,cvv
# Grant permissions with row-level filtering (user can only see their own records)
php artisan dbaas:permission grant --user=5 --table=orders --operations=select,update --where='[["user_id","=",5]]'

For more details on user and permission management, see the authentication documentation and permission management documentation.

Documentation

For detailed documentation on how to use the DBaaS API, including all available endpoints, request/response formats, and examples, please refer to the documentation index.

The documentation includes:

License

This project is licensed under the MIT License - see the LICENSE file for details.

This project is open-sourced software licensed under the MIT license.

About

Database as a (RESTful) Service

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Database as a Service (DBaaS) API

Overview

DBaaS is a powerful RESTful API interface that allows you to interact with databases without writing a full backend. It maps HTTP methods to SQL operations with robust authentication and granular access control, providing a secure and flexible way to manage database operations through a standardized API.

Features

Database Operations

  • RESTful API: Maps HTTP methods to SQL operations
    • GET → SELECT SQL statements with support for filtering, sorting, and pagination
    • POST → INSERT SQL statements with validation and bulk insertion capabilities
    • PUT → UPDATE SQL statements with UPSERT functionality for create-or-update operations
    • DELETE → DELETE SQL statements with conditional deletion
  • Complex Queries: Support for complex WHERE conditions, JOINs, and aggregate functions
  • Data Export: Export table data to JSON or CSV formats

Security & Access Control

  • Authentication: API key-based authentication with 30-day expiration and refresh capabilities
  • Role-Based Access Control: Two-tier role system
    • Admin: Full system access with user management capabilities
    • User: Limited access based on explicitly granted permissions
  • Granular Permissions:
    • Table-specific permissions for precise access control
    • Operation-specific permissions (select, insert, update, delete)
    • Column-level restrictions to hide sensitive data
    • Row-level filtering with WHERE conditions for data isolation
  • Security: Input validation, query sanitization, prepared statements, and comprehensive error handling

Administration

  • CLI Tools: Comprehensive Artisan commands for administration
    • User management (add, remove, update, list)
    • Permission management with granular control
    • Table management (create, modify, delete, list, export, seed)
  • Interactive Mode: All commands support both interactive and non-interactive usage
  • Detailed Logging: Track all database operations with user attribution

Installation

Requirements

  • PHP 8.1 or higher
  • Composer
  • MySQL, PostgreSQL, or SQLite database
  • Web server (Apache, Nginx, etc.)

Step-by-Step Installation

  1. Clone the repository

    git clone https://github.com/AthenaNetworks/DBaaS.git
    cd DBaaS
  2. Install dependencies

    composer install
  3. Set up environment variables

    cp .env.example .env
    php artisan key:generate
  4. Configure your database connection in the .env file

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=dbaas
    DB_USERNAME=root
    DB_PASSWORD=
    
  5. Run migrations and seed the database

    php artisan migrate
    php artisan db:seed --class=UsersAndPermissionsSeeder
  6. Configure your web server

    For Apache, ensure the document root points to the /public directory.

    For Nginx, use a configuration similar to:

    server {
    listen 80;
    server_name dbaas.example.com;
    root /path/to/DBaaS/public;
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";
    index index.php;
    charset utf-8;
    location / {
    try_files $uri $uri/ /index.php?$query_string;
    }
    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt { access_log off; log_not_found off; }
    error_page 404 /index.php;
    location ~ \.php$ {
    fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
    include fastcgi_params;
    }
    location ~ /\.(?!well-known).* {
    deny all;
    }
    }
    
  7. Start the development server (for local development)

    php artisan serve

    Your API will be available at http://localhost:8000

User and Permission Management

User Management

DBaaS provides a powerful Artisan command for managing users without requiring API access:

php artisan dbaas:user {action?} [options]

Available actions:

  • add - Create a new user with name, email, password, and role
  • remove - Delete an existing user with confirmation
  • update - Modify user details including role and API key refresh
  • list - Display all users with their details (default)

Examples:

# Create an admin user
php artisan dbaas:user add --name="Admin User" --email="admin@example.com" --password="secure123" --role="admin"# Update a user's role and refresh their API key
php artisan dbaas:user update --id=1 --role="admin" --refresh-key
# List all users with their details
php artisan dbaas:user list

Permission Management

The granular permission system is managed through a dedicated Artisan command:

php artisan dbaas:permission {action?} [options]

Available actions:

  • grant - Grant permissions to a user with precise control
  • revoke - Remove permissions from a user
  • list - List all permissions with filtering options
  • show - Show detailed information about a specific permission

Examples:

# Grant a user permission to select and update records in a table
php artisan dbaas:permission grant --user=5 --table=customers --operations=select,update
# Grant permissions with column restrictions (hide sensitive data)
php artisan dbaas:permission grant --user=user@example.com --table=orders --operations=select,insert,update --columns-denied=credit_card_number,cvv
# Grant permissions with row-level filtering (user can only see their own records)
php artisan dbaas:permission grant --user=5 --table=orders --operations=select,update --where='[["user_id","=",5]]'

For more details on user and permission management, see the authentication documentation and permission management documentation.

Documentation

For detailed documentation on how to use the DBaaS API, including all available endpoints, request/response formats, and examples, please refer to the documentation index.

The documentation includes:

License

This project is licensed under the MIT License - see the LICENSE file for details.

This project is open-sourced software licensed under the MIT license.

About

Database as a (RESTful) Service

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Database as a Service (DBaaS) API

Overview

DBaaS is a powerful RESTful API interface that allows you to interact with databases without writing a full backend. It maps HTTP methods to SQL operations with robust authentication and granular access control, providing a secure and flexible way to manage database operations through a standardized API.

Features

Database Operations

  • RESTful API: Maps HTTP methods to SQL operations
    • GET → SELECT SQL statements with support for filtering, sorting, and pagination
    • POST → INSERT SQL statements with validation and bulk insertion capabilities
    • PUT → UPDATE SQL statements with UPSERT functionality for create-or-update operations
    • DELETE → DELETE SQL statements with conditional deletion
  • Complex Queries: Support for complex WHERE conditions, JOINs, and aggregate functions
  • Data Export: Export table data to JSON or CSV formats

Security & Access Control

  • Authentication: API key-based authentication with 30-day expiration and refresh capabilities
  • Role-Based Access Control: Two-tier role system
    • Admin: Full system access with user management capabilities
    • User: Limited access based on explicitly granted permissions
  • Granular Permissions:
    • Table-specific permissions for precise access control
    • Operation-specific permissions (select, insert, update, delete)
    • Column-level restrictions to hide sensitive data
    • Row-level filtering with WHERE conditions for data isolation
  • Security: Input validation, query sanitization, prepared statements, and comprehensive error handling

Administration

  • CLI Tools: Comprehensive Artisan commands for administration
    • User management (add, remove, update, list)
    • Permission management with granular control
    • Table management (create, modify, delete, list, export, seed)
  • Interactive Mode: All commands support both interactive and non-interactive usage
  • Detailed Logging: Track all database operations with user attribution

Installation

Requirements

  • PHP 8.1 or higher
  • Composer
  • MySQL, PostgreSQL, or SQLite database
  • Web server (Apache, Nginx, etc.)

Step-by-Step Installation

  1. Clone the repository

    git clone https://github.com/AthenaNetworks/DBaaS.git
    cd DBaaS
  2. Install dependencies

    composer install
  3. Set up environment variables

    cp .env.example .env
    php artisan key:generate
  4. Configure your database connection in the .env file

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=dbaas
    DB_USERNAME=root
    DB_PASSWORD=
    
  5. Run migrations and seed the database

    php artisan migrate
    php artisan db:seed --class=UsersAndPermissionsSeeder
  6. Configure your web server

    For Apache, ensure the document root points to the /public directory.

    For Nginx, use a configuration similar to:

    server {
    listen 80;
    server_name dbaas.example.com;
    root /path/to/DBaaS/public;
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";
    index index.php;
    charset utf-8;
    location / {
    try_files $uri $uri/ /index.php?$query_string;
    }
    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt { access_log off; log_not_found off; }
    error_page 404 /index.php;
    location ~ \.php$ {
    fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
    include fastcgi_params;
    }
    location ~ /\.(?!well-known).* {
    deny all;
    }
    }
    
  7. Start the development server (for local development)

    php artisan serve

    Your API will be available at http://localhost:8000

User and Permission Management

User Management

DBaaS provides a powerful Artisan command for managing users without requiring API access:

php artisan dbaas:user {action?} [options]

Available actions:

  • add - Create a new user with name, email, password, and role
  • remove - Delete an existing user with confirmation
  • update - Modify user details including role and API key refresh
  • list - Display all users with their details (default)

Examples:

# Create an admin user
php artisan dbaas:user add --name="Admin User" --email="admin@example.com" --password="secure123" --role="admin"# Update a user's role and refresh their API key
php artisan dbaas:user update --id=1 --role="admin" --refresh-key
# List all users with their details
php artisan dbaas:user list

Permission Management

The granular permission system is managed through a dedicated Artisan command:

php artisan dbaas:permission {action?} [options]

Available actions:

  • grant - Grant permissions to a user with precise control
  • revoke - Remove permissions from a user
  • list - List all permissions with filtering options
  • show - Show detailed information about a specific permission

Examples:

# Grant a user permission to select and update records in a table
php artisan dbaas:permission grant --user=5 --table=customers --operations=select,update
# Grant permissions with column restrictions (hide sensitive data)
php artisan dbaas:permission grant --user=user@example.com --table=orders --operations=select,insert,update --columns-denied=credit_card_number,cvv
# Grant permissions with row-level filtering (user can only see their own records)
php artisan dbaas:permission grant --user=5 --table=orders --operations=select,update --where='[["user_id","=",5]]'

For more details on user and permission management, see the authentication documentation and permission management documentation.

Documentation

For detailed documentation on how to use the DBaaS API, including all available endpoints, request/response formats, and examples, please refer to the documentation index.

The documentation includes:

License

This project is licensed under the MIT License - see the LICENSE file for details.

This project is open-sourced software licensed under the MIT license.

About

Database as a (RESTful) Service

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Database as a Service (DBaaS) API

Overview

DBaaS is a powerful RESTful API interface that allows you to interact with databases without writing a full backend. It maps HTTP methods to SQL operations with robust authentication and granular access control, providing a secure and flexible way to manage database operations through a standardized API.

Features

Database Operations

  • RESTful API: Maps HTTP methods to SQL operations
    • GET → SELECT SQL statements with support for filtering, sorting, and pagination
    • POST → INSERT SQL statements with validation and bulk insertion capabilities
    • PUT → UPDATE SQL statements with UPSERT functionality for create-or-update operations
    • DELETE → DELETE SQL statements with conditional deletion
  • Complex Queries: Support for complex WHERE conditions, JOINs, and aggregate functions
  • Data Export: Export table data to JSON or CSV formats

Security & Access Control

  • Authentication: API key-based authentication with 30-day expiration and refresh capabilities
  • Role-Based Access Control: Two-tier role system
    • Admin: Full system access with user management capabilities
    • User: Limited access based on explicitly granted permissions
  • Granular Permissions:
    • Table-specific permissions for precise access control
    • Operation-specific permissions (select, insert, update, delete)
    • Column-level restrictions to hide sensitive data
    • Row-level filtering with WHERE conditions for data isolation
  • Security: Input validation, query sanitization, prepared statements, and comprehensive error handling

Administration

  • CLI Tools: Comprehensive Artisan commands for administration
    • User management (add, remove, update, list)
    • Permission management with granular control
    • Table management (create, modify, delete, list, export, seed)
  • Interactive Mode: All commands support both interactive and non-interactive usage
  • Detailed Logging: Track all database operations with user attribution

Installation

Requirements

  • PHP 8.1 or higher
  • Composer
  • MySQL, PostgreSQL, or SQLite database
  • Web server (Apache, Nginx, etc.)

Step-by-Step Installation

  1. Clone the repository

    git clone https://github.com/AthenaNetworks/DBaaS.git
    cd DBaaS
  2. Install dependencies

    composer install
  3. Set up environment variables

    cp .env.example .env
    php artisan key:generate
  4. Configure your database connection in the .env file

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=dbaas
    DB_USERNAME=root
    DB_PASSWORD=
    
  5. Run migrations and seed the database

    php artisan migrate
    php artisan db:seed --class=UsersAndPermissionsSeeder
  6. Configure your web server

    For Apache, ensure the document root points to the /public directory.

    For Nginx, use a configuration similar to:

    server {
    listen 80;
    server_name dbaas.example.com;
    root /path/to/DBaaS/public;
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";
    index index.php;
    charset utf-8;
    location / {
    try_files $uri $uri/ /index.php?$query_string;
    }
    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt { access_log off; log_not_found off; }
    error_page 404 /index.php;
    location ~ \.php$ {
    fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
    include fastcgi_params;
    }
    location ~ /\.(?!well-known).* {
    deny all;
    }
    }
    
  7. Start the development server (for local development)

    php artisan serve

    Your API will be available at http://localhost:8000

User and Permission Management

User Management

DBaaS provides a powerful Artisan command for managing users without requiring API access:

php artisan dbaas:user {action?} [options]

Available actions:

  • add - Create a new user with name, email, password, and role
  • remove - Delete an existing user with confirmation
  • update - Modify user details including role and API key refresh
  • list - Display all users with their details (default)

Examples:

# Create an admin user
php artisan dbaas:user add --name="Admin User" --email="admin@example.com" --password="secure123" --role="admin"# Update a user's role and refresh their API key
php artisan dbaas:user update --id=1 --role="admin" --refresh-key
# List all users with their details
php artisan dbaas:user list

Permission Management

The granular permission system is managed through a dedicated Artisan command:

php artisan dbaas:permission {action?} [options]

Available actions:

  • grant - Grant permissions to a user with precise control
  • revoke - Remove permissions from a user
  • list - List all permissions with filtering options
  • show - Show detailed information about a specific permission

Examples:

# Grant a user permission to select and update records in a table
php artisan dbaas:permission grant --user=5 --table=customers --operations=select,update
# Grant permissions with column restrictions (hide sensitive data)
php artisan dbaas:permission grant --user=user@example.com --table=orders --operations=select,insert,update --columns-denied=credit_card_number,cvv
# Grant permissions with row-level filtering (user can only see their own records)
php artisan dbaas:permission grant --user=5 --table=orders --operations=select,update --where='[["user_id","=",5]]'

For more details on user and permission management, see the authentication documentation and permission management documentation.

Documentation

For detailed documentation on how to use the DBaaS API, including all available endpoints, request/response formats, and examples, please refer to the documentation index.

The documentation includes:

License

This project is licensed under the MIT License - see the LICENSE file for details.

This project is open-sourced software licensed under the MIT license.

About

Database as a (RESTful) Service

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Database as a Service (DBaaS) API

Overview

DBaaS is a powerful RESTful API interface that allows you to interact with databases without writing a full backend. It maps HTTP methods to SQL operations with robust authentication and granular access control, providing a secure and flexible way to manage database operations through a standardized API.

Features

Database Operations

  • RESTful API: Maps HTTP methods to SQL operations
    • GET → SELECT SQL statements with support for filtering, sorting, and pagination
    • POST → INSERT SQL statements with validation and bulk insertion capabilities
    • PUT → UPDATE SQL statements with UPSERT functionality for create-or-update operations
    • DELETE → DELETE SQL statements with conditional deletion
  • Complex Queries: Support for complex WHERE conditions, JOINs, and aggregate functions
  • Data Export: Export table data to JSON or CSV formats

Security & Access Control

  • Authentication: API key-based authentication with 30-day expiration and refresh capabilities
  • Role-Based Access Control: Two-tier role system
    • Admin: Full system access with user management capabilities
    • User: Limited access based on explicitly granted permissions
  • Granular Permissions:
    • Table-specific permissions for precise access control
    • Operation-specific permissions (select, insert, update, delete)
    • Column-level restrictions to hide sensitive data
    • Row-level filtering with WHERE conditions for data isolation
  • Security: Input validation, query sanitization, prepared statements, and comprehensive error handling

Administration

  • CLI Tools: Comprehensive Artisan commands for administration
    • User management (add, remove, update, list)
    • Permission management with granular control
    • Table management (create, modify, delete, list, export, seed)
  • Interactive Mode: All commands support both interactive and non-interactive usage
  • Detailed Logging: Track all database operations with user attribution

Installation

Requirements

  • PHP 8.1 or higher
  • Composer
  • MySQL, PostgreSQL, or SQLite database
  • Web server (Apache, Nginx, etc.)

Step-by-Step Installation

  1. Clone the repository

    git clone https://github.com/AthenaNetworks/DBaaS.git
    cd DBaaS
  2. Install dependencies

    composer install
  3. Set up environment variables

    cp .env.example .env
    php artisan key:generate
  4. Configure your database connection in the .env file

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=dbaas
    DB_USERNAME=root
    DB_PASSWORD=
    
  5. Run migrations and seed the database

    php artisan migrate
    php artisan db:seed --class=UsersAndPermissionsSeeder
  6. Configure your web server

    For Apache, ensure the document root points to the /public directory.

    For Nginx, use a configuration similar to:

    server {
    listen 80;
    server_name dbaas.example.com;
    root /path/to/DBaaS/public;
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";
    index index.php;
    charset utf-8;
    location / {
    try_files $uri $uri/ /index.php?$query_string;
    }
    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt { access_log off; log_not_found off; }
    error_page 404 /index.php;
    location ~ \.php$ {
    fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
    include fastcgi_params;
    }
    location ~ /\.(?!well-known).* {
    deny all;
    }
    }
    
  7. Start the development server (for local development)

    php artisan serve

    Your API will be available at http://localhost:8000

User and Permission Management

User Management

DBaaS provides a powerful Artisan command for managing users without requiring API access:

php artisan dbaas:user {action?} [options]

Available actions:

  • add - Create a new user with name, email, password, and role
  • remove - Delete an existing user with confirmation
  • update - Modify user details including role and API key refresh
  • list - Display all users with their details (default)

Examples:

# Create an admin user
php artisan dbaas:user add --name="Admin User" --email="admin@example.com" --password="secure123" --role="admin"# Update a user's role and refresh their API key
php artisan dbaas:user update --id=1 --role="admin" --refresh-key
# List all users with their details
php artisan dbaas:user list

Permission Management

The granular permission system is managed through a dedicated Artisan command:

php artisan dbaas:permission {action?} [options]

Available actions:

  • grant - Grant permissions to a user with precise control
  • revoke - Remove permissions from a user
  • list - List all permissions with filtering options
  • show - Show detailed information about a specific permission

Examples:

# Grant a user permission to select and update records in a table
php artisan dbaas:permission grant --user=5 --table=customers --operations=select,update
# Grant permissions with column restrictions (hide sensitive data)
php artisan dbaas:permission grant --user=user@example.com --table=orders --operations=select,insert,update --columns-denied=credit_card_number,cvv
# Grant permissions with row-level filtering (user can only see their own records)
php artisan dbaas:permission grant --user=5 --table=orders --operations=select,update --where='[["user_id","=",5]]'

For more details on user and permission management, see the authentication documentation and permission management documentation.

Documentation

For detailed documentation on how to use the DBaaS API, including all available endpoints, request/response formats, and examples, please refer to the documentation index.

The documentation includes:

License

This project is licensed under the MIT License - see the LICENSE file for details.

This project is open-sourced software licensed under the MIT license.

About

Database as a (RESTful) Service

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages