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:
@@ -211,12 +211,31 @@ class Server
|
||||
return 'owner';
|
||||
}
|
||||
|
||||
$assignment = $this->db->fetch(
|
||||
$direct = $this->db->fetch(
|
||||
'SELECT role FROM server_user WHERE server_id = ? AND user_id = ?',
|
||||
[$serverId, $userId]
|
||||
);
|
||||
|
||||
return $assignment ? $assignment['role'] : null;
|
||||
$teamRole = $this->db->fetch(
|
||||
'SELECT ts.role FROM team_user tu
|
||||
JOIN team_server ts ON tu.team_id = ts.team_id
|
||||
WHERE tu.user_id = ? AND ts.server_id = ?
|
||||
ORDER BY FIELD(ts.role, \'manager\', \'viewer\')
|
||||
LIMIT 1',
|
||||
[$userId, $serverId]
|
||||
);
|
||||
|
||||
$directRole = $direct ? $direct['role'] : null;
|
||||
$teamRoleValue = $teamRole ? $teamRole['role'] : null;
|
||||
|
||||
if ($directRole === 'manager' || $teamRoleValue === 'manager') {
|
||||
return 'manager';
|
||||
}
|
||||
if ($directRole === 'viewer' || $teamRoleValue === 'viewer') {
|
||||
return 'viewer';
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public function getAccessibleServerIds(int $userId): array
|
||||
@@ -231,6 +250,13 @@ class Server
|
||||
[$userId]
|
||||
);
|
||||
|
||||
$teamServerIds = $this->db->fetchAll(
|
||||
'SELECT DISTINCT ts.server_id FROM team_user tu
|
||||
JOIN team_server ts ON tu.team_id = ts.team_id
|
||||
WHERE tu.user_id = ?',
|
||||
[$userId]
|
||||
);
|
||||
|
||||
$ids = [];
|
||||
foreach ($owned as $row) {
|
||||
$ids[] = (int) $row['id'];
|
||||
@@ -238,6 +264,9 @@ class Server
|
||||
foreach ($assigned as $row) {
|
||||
$ids[] = (int) $row['server_id'];
|
||||
}
|
||||
foreach ($teamServerIds as $row) {
|
||||
$ids[] = (int) $row['server_id'];
|
||||
}
|
||||
|
||||
return array_unique($ids);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user