validate($databaseUser->server, $input); $dbs = Database::query() ->where('server_id', $databaseUser->server_id) ->whereIn('name', $input['databases']) ->count(); if (count($input['databases']) !== $dbs) { throw ValidationException::withMessages(['databases' => __('Databases not found!')]); } $databaseUser->databases = $input['databases']; // Unlink the user from all databases $databaseUser->server->database()->handler()->unlink( $databaseUser->username, $databaseUser->host ); // Link the user to the selected databases $databaseUser->server->database()->handler()->link( $databaseUser->username, $databaseUser->host, $databaseUser->databases ); $databaseUser->save(); } private function validate(Server $server, array $input): void { $rules = [ 'databases.*' => [ 'required', Rule::exists('databases', 'name')->where('server_id', $server->id), ], ]; Validator::make($input, $rules)->validate(); } }