Replace old team system with work teams (equipos de trabajo)
- New migration 003_teams.sql: teams, team_user, team_server tables - New Team model with CRUD, members, and server assignment - New TeamController with full team management - New views: teams/index, teams/create, teams/show - Server model: getUserRole and getAccessibleServerIds now include team-based access - Sidebar: Teams link under Administration (admin+ only) - Routes: old /team routes removed, new /teams routes added - Removed old ServerController team methods and views - Fixed sidebar empty accessible IDs returning all servers - Fixed dashboard and API to show empty when no accessible servers
This commit is contained in:
47
database/migrations/003_teams.sql
Normal file
47
database/migrations/003_teams.sql
Normal file
@@ -0,0 +1,47 @@
|
||||
-- ============================================================================
|
||||
-- ServerManager Teams
|
||||
-- Team-based access control: teams group users and servers together
|
||||
-- ============================================================================
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `teams` (
|
||||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`name` VARCHAR(100) NOT NULL,
|
||||
`description` TEXT DEFAULT NULL,
|
||||
`created_by` INT UNSIGNED NOT NULL,
|
||||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_name` (`name`),
|
||||
KEY `idx_created_by` (`created_by`),
|
||||
CONSTRAINT `fk_teams_created_by` FOREIGN KEY (`created_by`)
|
||||
REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `team_user` (
|
||||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`team_id` INT UNSIGNED NOT NULL,
|
||||
`user_id` INT UNSIGNED NOT NULL,
|
||||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_team_user` (`team_id`, `user_id`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
CONSTRAINT `fk_team_user_team` FOREIGN KEY (`team_id`)
|
||||
REFERENCES `teams` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT `fk_team_user_user` FOREIGN KEY (`user_id`)
|
||||
REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `team_server` (
|
||||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`team_id` INT UNSIGNED NOT NULL,
|
||||
`server_id` INT UNSIGNED NOT NULL,
|
||||
`role` ENUM('viewer', 'manager') NOT NULL DEFAULT 'viewer',
|
||||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_team_server` (`team_id`, `server_id`),
|
||||
KEY `idx_server_id` (`server_id`),
|
||||
CONSTRAINT `fk_team_server_team` FOREIGN KEY (`team_id`)
|
||||
REFERENCES `teams` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT `fk_team_server_server` FOREIGN KEY (`server_id`)
|
||||
REFERENCES `servers` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
Reference in New Issue
Block a user